Skrypt, który nie jest skończony


0

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)


5
Twój test $i -ge $serverCounterjest 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, Kontrolgdzie N jest serverCounter/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.
— ksenoid

1
Twoja pętla będzie działać skończoną liczbę razy. Nigdy nie będę większy od serverCounter, ponieważ będzie istniał, gdy będzie równy lub większy od serverCounter takim, jakim jest.
— Ramhound

właściwie nie ma problemu z bieganiem i kończeniem. Nie widzę procesu w ps -ef, więc skrypt może się zakończyć, ale nie mogę wpaść w ekran bash po ostatniej kontroli. tylko kursor miga. Problem polega na przekierowaniu „&”, tak mi się wydaje.
— Gefolge

tak @Ramhound Wiem o tym, ale już dodałem tę linię po tym problemie. Więc tak, nie mogę wpisać true jeśli instrukcja if, ale nie mogłem wcześniej wyjść z pętli, jeśli i tak warunek.
— Gefolge

@Gefolge - Twój warunek wyjścia jest oceniany tylko raz na iterację pętli, chyba że masz dodatkowy warunek, który przerywa lub kontynuuje pętlę.
— Ramhound
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.