Ich brauche nohup
zwei Befehle nacheinander. Der zweite Befehl muss NACH dem ersten Befehl ausgeführt werden. Hier sind die Befehle:
tar -zcf archive.tar.gz.tmp mydir
mv archive.tar.gz.tmp archive.tar.gz
Ich brauche die Befehle, um im Hintergrund ausgeführt zu werden, aber offensichtlich nicht beide gleichzeitig. Der zweite Befehl muss ausgeführt werden, nachdem der erste Befehl abgeschlossen ist. Ich habe es versucht:
nohup tar -zcf archive.tar.gz.tmp mydir ; mv archive.tar.gz.tmp archive.tar.gz > /dev/null 2>&1 &
Die Befehle werden jedoch nicht im Hintergrund ausgeführt. Die Bash-Eingabeaufforderung wartet, bis die beiden Befehle abgeschlossen sind, bevor sie mir eine weitere Eingabeaufforderung gibt. Ich brauche sie, um im Hintergrund zu laufen.
Wenn ich mache:
nohup tar -zcf archive.tar.gz.tmp mydir > /dev/null 2>&1 &
Das läuft perfekt im Hintergrund. Es ist nur, wenn ich versuche, mehr als einen Befehl auszuführen.
Ich habe auch versucht:
nohup tar -zcf archive.tar.gz.tmp mydir > /dev/null 2>&1 & ; mv archive.tar.gz.tmp archive.tar.gz > /dev/null 2>&1 &
Aber das hat auch nicht funktioniert. Ungültige Syntax oder so. Ich bin mir sicher, dass es einen Weg gibt, dies zu tun, aber ich bin mir der Syntax einfach nicht sicher.
Die einzige Alternative, die ich mir .sh
vorstellen kann, besteht darin, die Befehle in eine Datei zu schreiben und diese Datei nicht zu aktualisieren, aber das kann ich nicht unbedingt auf dem Linux-System tun, auf dem ich dies implementieren muss (Berechtigungsbeschränkungen usw.).
&&
anstatt;
dass der zweite Befehl nur ausgeführt wird, wenn der erste erfolgreich war (&&
ein bestimmter Bash-Befehl).