Wie kann man eine Endlosschleife in Upstart "Pre-Start Script" erzwingen?
Ich habe Folgendes pre-start script
in einer meiner Upstart-Konfigurationen:
pre-start script cd "$(dirname "$(dirname "$(readlink "/etc/init/$.conf")")")" . "lib/upstart/waitFor[...].sh" end script
Die aufgerufene Funktion ist im Wesentlichen nur eine Endlosschleife, die darauf wartet, dass eine Ressource verfügbar wird, für die derzeit keine Upstart-Konfiguration vorhanden ist:
function waitFor[...]() { while [ true ] do if [...] > /dev/null then break fi sleep 10s done } waitFor[...]
Gestern habe ich ein Problem mit diesem Ansatz erkannt, wenn die erwartete Ressource aus irgendeinem Grund nicht verfügbar wird: Der Job hängt für immer fest start/pre-start
, was erwartet wird, aber wenn ich ein stop
Ereignis ausstelle, wird das pre-start script
nicht getötet oder ähnliches, was ich falsch angenommen habe. Stattdessen wird der Status des Jobs in geändert stop/pre-start
. Das Problem dabei ist, dass die Shell, in der ich das stop
Ereignis ausgegeben habe, jetzt für immer hängt und höchstwahrscheinlich auf das pre-start script
Ende wartet . Wenn ich diese Shell STRG + C stelle und stop
erneut ausgeben, meldet Upstart, dass der Job bereits gestoppt ist und schnell zurückkehrt, der aber pre-start script
noch läuft, was leicht zu sehen status
ist stop/pre-start
.
Ich brauche also einen Weg, Upstart entweder dazu zu zwingen, das Skript selbst zu beenden oder im Skript zu erkennen, dass es aufhören sollte, selbst zu warten.
Ich finde kein force
Argument oder ähnliches nur für Upstart --no-wait
. Damit wird das wartende Skript jedoch nicht gestoppt, nur die blockierende Shell wird nicht mehr blockiert. Gibt es also eine Zustandsänderung, die das Skript leicht erkennen kann? Das einzige, was mir momentan einfällt, ist die Abfrage des Auftragsstatus.
Noch mehr Ideen? Ich denke, ich würde ein Kommandozeilenargument für den Stopp vorziehen, den ich vielleicht übersehen hätte.
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4