목록에서 Linux 서버의 일부 구성을 확인하기 위해 스크립트를 입력했습니다. 목록에 너무 많은 서버가 있으므로 아래 목록에서 10을 10으로 나눕니다.
...
...
for ((i=0; i <= $serverCounter; i+=15))
do
if [ $i -ge $serverCounter ]
then
exit
else
echo $i
Kontrol $list &
((first+=15))
((last+=15))
fi
done
...
...
그러나이 상황에서 나는이 루프를 빠져 나갈 수 없다. 나가기 위해 조건을 추가했음을 알 수 있지만 작동하지 않습니다 (이유를 모르겠습니다).
"& amp;"에서 포기하지 않고이 루프를 종료하려면 어떻게해야합니까? EOL에서 (Kontrol function line)
루프는 일정한 시간만큼 실행됩니다. 나는 serverCounter보다 크거나 같을 때 존재할 것이기 때문에 serverCounter보다 크지 않을 것입니다.
—
Ramhound
실제로는 달리거나 마무리하는 데 문제가 없습니다. ps -ef에서 프로세스를 볼 수 없으므로 스크립트를 끝낼 수는 있지만 마지막 제어 후 bash 화면으로 넘어갈 수는 없습니다. 커서가 깜박입니다. 문제는 "& amp;"입니다. 방향 전환 나는 그렇게 생각한다.
—
Gefolge
예 @ Ramhound 나는 그것을 알고 있지만 나는이 문제 이후에 그 행을 이미 추가했다. 그렇습니다. 진술을한다면 진실을 입력 할 수는 없지만, 어쨌든 조건이 충족되기 전에 루프를 종료 할 수 없었습니다.
—
Gefolge
@Gefolge - 루프를 중단 시키거나 계속하는 추가 조건이없는 한 종료 조건은 루프 반복마다 한 번만 평가됩니다.
—
Ramhound
$i -ge $serverCounter
for 루프에있는 것과 중복됩니다 (경우에만 catch합니다).$i -eq $serverCounter
). 작성된 코드는 여전히 N 개의 병렬 인스턴스를 시작합니다.Kontrol
여기서 N은이다.serverCounter/15
따라서 이러한 모든 인스턴스가 결국 시스템에 과부하가 걸리고 루프를 계속 진행하는 데 필요한 CPU가 충분하지 않을 수 있습니다. Kontrol의 K 인스턴스가 동시에 실행되지 않도록 더 복잡한 것을 작성해야 할 수도 있습니다.