Wpisałem skrypt, aby sprawdzić niektóre konfiguracje serwerów Linux z listy. Na liście znajduje się zbyt wiele serwerów, dlatego podzieliłem 10 na 10 z poniższej listy:
...
...
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
...
...
Ale w tej sytuacji nie mogę wyjść z tej pętli. Możesz zobaczyć, że dodałem warunek if, aby wyjść, ale to nie działa (nie wiem dlaczego).
Jak wyjść z tej pętli bez porzucania „&” w EOL (wiersz funkcji Kontrol)
linux
bash
script
infinite-loop
Gefolge
źródło
źródło
$i -ge $serverCounter
jest zbędny z testem w pętli for (łapie tylko przypadek, w którym$i -eq $serverCounter
). Jak napisano, twój kod będzie nadal uruchamiał N równoległych instancji,Kontrol
gdzie N jestserverCounter/15
, więc twoim problemem może być to, że wszystkie te instancje ostatecznie przeciążą twój system i nie masz wystarczającej ilości procesora, aby kontynuować pętlę. Być może będziesz musiał napisać coś bardziej złożonego, aby nigdy nie mieć więcej niż K instancji Kontrol działających w tym samym czasie.