2010-06-19 8 views
6

Ich habe zwei Skripte sagen 'S1' und 'S2'. Ich ausführen diese Skripte wiesequentiell Hintergrundprozesse ausführen Unix

nohup S1 &

nohup S2 &

Aber ich würde sie nacheinander ausführen möchten. dh S2 sollte nur bei erfolgreichem Abschluss von S1 ausgeführt werden. Wie soll ich das machen? Wie kann ich wissen, wann S1 die Ausführung beendet? Jedes Beispiel würde sehr geschätzt werden. Vielen Dank.

Antwort

9

Sie können sie ausführen, der Reihe nach, das ist wie:

(nohup S1 && nohup S2) & 

(echo 1 && sleep 1 && echo 2) & 

Die double ampersand operator is described here Versuchen.

Beachten Sie, dass bei Verwendung von &&, S2 nur ausgeführt wird, wenn S1 "erfolgreich" beendet wird (Rückkehrcode 0). Dies scheint das zu sein, was du wolltest. Wenn Sie möchten, dass S2 unabhängig davon ausgeführt wird, ob S1 erfolgreich ist, verwenden Sie ; anstelle von &&.

+0

Vielen Dank !. Ich werde das überprüfen. – wowrt

+0

Hallo, stephen! Würden Sie mir bitte mit dieser Frage helfen http://unix.stackexchange.com/questions/101411/how-to-run-new-background-command-sequentially-if-i-ready-have-a-nohup-backgro/ 101421? Noredirect = 1 # Kommentar154602_101421? Ich werde sehr dankbar sein. – user15964

Verwandte Themen