Es gibt einige Probleme:
- Das Skript kommt nie über das erste hinaus
done
und dies ist der Hauptgrund, warum der zweite Teil nicht funktioniert. - Es gibt kein Shebang .
while true :
ist komisch. Beidetrue
und:
sind eingebaute in Bash, beide geben wahr zurück . Sohlewhile true
wäre genug, das gleiche mitwhile :
. Es scheint, Sie wollten ( ? ) Beide Varianten gleichzeitig verwenden, und dieser Code funktioniert sogar, dh er schlägt fehl. Es scheitert nicht, weil dies:
nicht ein von mir erwähntes Gebäude ist; es ist ein Argument für dentrue
Befehl.true
verwirft seine Befehlszeilenargumente.true :
odertrue almost anything
ist äquivalent dazutrue
, alsowhile true :
funktioniert deine Arbeit gernewhile true
.
Eine Möglichkeit, viele separate Prozesse mit einem Skript neu zu starten, sieht folgendermaßen aus:
#!/bin/bash trap "kill 0" SIGINT while :; do process1; done & while :; do process2; done & # ... while :; do processN; done
Dies führt N while
Schleifen in separaten Shells (N-1 Subshells und Main Shells) aus, sodass jede einzelne Schleife unabhängig voneinander parallel ausgeführt wird. In Ihrem Fall kann das Skript sein:
#!/bin/bash trap "kill 0" SIGINT while : do ./stream.sh echo "Stream has Crashed" done & while : do ./current_song.sh echo "Current Song has Crashed" done
Die Falle tötet (versucht zu töten) alle Nachkommen dank dieses kill 0
Tricks :
Alle Prozesse in der aktuellen Prozessgruppe werden signalisiert