Wie kann ich die PID jedes Befehls im Shell-Skript überwachen?

Wie kann ich die PID jedes Befehls im Shell-Skript überwachen?

In meiner Situation habe ich ein Shell-Skript, das im Hintergrund rsync und tar ausführt. Rsync wird zum Übertragen von Dateien verwendet und tar führt die Komprimierung durch, nachdem rsync abgeschlossen ist. Mein Problem besteht darin, wie ich die PID von rsync überwachen und dem tar-Befehl mitteilen kann, dass er gestartet werden soll, wenn die PID von rsync nicht mehr existiert.

Das Shell-Skript kann folgendermaßen aussehen:

rsync data.log B/ &
tar data.tar.gz B/data.log &

Antwort1

es ist ganz einfach: Sie müssen die PID-Variable mit folgendem speichern:

PID_1=$!

Um zu prüfen, ob der Vorgang noch läuft, führen Sie einfach kill -0 aus, etwa:

while True:
     if [ 'kill -0 $PID_1' -eq 0 ]; then
         echo Process still running
     else
         echo process done

(Wenn der Code nicht richtig läuft, tut es mir sehr leid. Ich habe im Bett geschrieben :-))

Zur Erklärung: 'kill -0 $PID_1' gibt 0 oder offensichtlich 1 zurück. Wenn es 0 ist, läuft der Prozess und wenn es 1 ist, ist der Prozess beendet. Sie können den Rückgabecode mit 'echo $?' überprüfen.

Ich hoffe das hilft.

verwandte Informationen