Sie können mehrere Befehle durch ;
trennen , also werden sie sequentiell ausgeführt, zum Beispiel:
really_long_script.sh ; echo Finished
Wenn Sie das nächste Programm nur ausführen möchten, wenn das Skript mit dem Rückgabecode 0 beendet wurde (was normalerweise bedeutet, dass es korrekt ausgeführt wurde), dann:
really_long_script.sh && echo OK
Wenn Sie das Gegenteil wollen (d. h. nur fortfahren, wenn der aktuelle Befehl fehlgeschlagen ist), dann:
really_long_script.sh || echo FAILED
Sie könnten Ihr Skript im Hintergrund ausführen (aber Vorsicht, die Skriptausgabe (stdout
und stderr
) würde weiterhin zu Ihrem Terminal gehen, es sei denn, Sie leiten es irgendwohin um), und dann wait
dafür:
really_long_script.sh &
dosomethingelse
wait; echo Finished
Wenn Sie das Skript bereits ausgeführt haben, können Sie es mit Ctrl-Z
anhalten , und führen Sie dann Folgendes aus:
fg ; echo Finished
Wobei fg
bringt den angehaltenen Prozess in den Vordergrund (bg
würde es im Hintergrund laufen lassen, so ziemlich wie mit &
begonnen )
Sie können auch die Jobsteuerung von bash verwenden. Wenn Sie begonnen haben
$ really_long_script.sh
drücken Sie dann Strg+z, um es zu unterbrechen:
^Z
[1]+ Stopped really_long_script.sh
$ bg
um den Job im Hintergrund neu zu starten (so als hätte man ihn mit really_long_script.sh &
gestartet ). Dann können Sie mit
$ wait N && echo "Successfully completed"
wobei N die Job-ID ist (wahrscheinlich 1, wenn Sie keine anderen Hintergrundjobs ausgeführt haben), die auch als [1]
angezeigt wird oben.
Wenn der Prozess nicht auf dem aktuellen tty läuft, versuchen Sie Folgendes:
watch -g ps -opid -p <pid>; mycommand