Das Skript, das nicht endlich ist

299
Gefolge

Ich habe ein Skript eingegeben, um einige Konfigurationen auf Linux-Servern anhand einer Liste zu überprüfen. Es sind zu viele Server in der Liste, also habe ich diese Liste mit der folgenden Schleife 10 durch 10 geteilt:

... ... 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 ... ... 

Aber in dieser Situation kann ich diese Schleife nicht verlassen. Sie können sehen, dass ich eine if-Bedingung zum Beenden hinzugefügt habe, aber es funktioniert nicht (ich weiß nicht warum).

Wie kann ich diese Schleife ohne Abbruch von "&" der bei EOL beenden (Kontrol-Funktionszeile)

0
Ihr Test `$ i -ge $ serverCounter` ist mit dem Test in der for-Schleife überflüssig (fängt nur den Fall ein, bei dem` $ i -eq $ serverCounter` ist). Wie geschrieben, wird Ihr Code weiterhin N parallele Instanzen von `Kontrol` starten, wobei N` serverCounter / 15` ist. Das Problem könnte also darin bestehen, dass alle diese Instanzen Ihr System überlasten und nicht genügend CPU vorhanden ist, um die Schleife fortzusetzen. Möglicherweise müssen Sie etwas komplexeres schreiben, um nie mehr K-Instanzen von Kontrol gleichzeitig auszuführen. xenoid vor 5 Jahren 5
Ihre Schleife wird endlos so ausgeführt, wie sie ist. Ich werde niemals größer als serverCounter sein, da es existiert, wenn ServerCounter gleich oder größer ist, als es ist. Ramhound vor 5 Jahren 1
eigentlich gibt es kein problem beim laufen und beenden. Ich kann den Prozess nicht in ps -ef sehen, also kann das Skript beendet werden, aber ich kann nach der letzten Steuerung nicht in den Bash-Bildschirm fallen. Nur der Cursor blinkt. Das Problem liegt bei der Umleitung "&", denke ich. Gefolge vor 5 Jahren 0
ja @Ramhound Ich weiß das, aber ich habe diese Zeile bereits nach diesem Problem hinzugefügt. Also ja, ich kann keine true-Anweisung eingeben, aber ich konnte die Schleife vor der if-Bedingung sowieso nicht beenden. Gefolge vor 5 Jahren 0
@Gefolge - Ihre Beendigungsbedingung wird nur einmal pro Iteration der Schleife ausgewertet, es sei denn, Sie haben eine zusätzliche Bedingung, die die Schleife unterbricht oder fortsetzt. Ramhound vor 5 Jahren 0
Beim ersten Skript gab es keine if-Bedingung. Ich habe es hinzugefügt, um eine unendliche Schleife zu vermeiden. Gefolge vor 5 Jahren 0

0 Antworten auf die Frage