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.