Einfachste Lösung:Erstellen Sie ein Shell-Skript mit
#/bin/sh
tar -zcf archive.tar.gz.tmp mydir
mv archive.tar.gz.tmp archive.tar.gz
Und verwenden Sie nohup myscript
. Möglicherweise mit zusätzlicher Dokumentation im Skript.
(Ja, ich bin ein Fan von Dokumentation. Besonders wenn Sie mit mehreren Personen arbeiten oder wenn Sie eines Tages den Job verlassen und Ihr Nachfolger herausfinden muss, warum.).
Eine Alternative könnte sein, eine neue Shell für eine Subtask zu starten (in diesem Fall Ihr tar und move)
nohup `$(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz)
Alternative 2:
nohup ```tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz```.
Ich bevorzuge das Skript aber wirklich. Die Kommentare darin könnten sehr nützlich sein, wenn Sie oder jemand anderes in ein paar Jahren das Skript ansieht und sich fragt, warum es so gemacht wurde.
Unabhängig davon:Wie zum Teufel poste ich eine Antwort mit einem Backtick darin? (Der Befehl für eine Shell, 'diesen Befehl zu verwenden; die Ausgabe einem anderen Befehl als Eingabe zuzuführen').
Ich glaube, Sie brauchen Klammern.
nohup $(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz) >/dev/null 2>&1 &
Vielleicht ein Bash-Wrap?
nohup bash -c 'tar -zcf archive.tar.gz.tmp mydir > /dev/null 2>&1 ; mv archive.tar.gz.tmp archive.tar.gz > /dev/null 2>&1' &