Soluzione più semplice:creare uno script di shell con
#/bin/sh
tar -zcf archive.tar.gz.tmp mydir
mv archive.tar.gz.tmp archive.tar.gz
E usa nohup myscript
. Possibilmente con della documentazione extra nello script.
(Sì, sono un fanatico della documentazione. Specialmente quando lavori con più persone o quando un giorno potresti lasciare il lavoro e il tuo successore deve capire perché".)
Un'alternativa potrebbe essere quella di avviare una nuova shell per una sottoattività (in questo caso tar e move)
nohup `$(tar -zcf archivio.tar.gz.tmp miadir; mv archivio.tar.gz.tmp archivio.tar.gz)
Alternativa 2:
nohup ```tar -zcf archivio.tar.gz.tmp miadir; mv archivio.tar.gz.tmp archivio.tar.gz```.
Preferisco davvero la sceneggiatura però. I commenti in esso contenuti potrebbero essere molto utili quando tu o qualcun altro guarderete la sceneggiatura tra qualche anno e vi chiederete perché è stato fatto in questo modo.
Su una nota non correlata:come diamine faccio a postare una risposta con un apice inverso? (Il comando per una shell per 'usare questo comando; inviare l'output a un altro comando come input').
Penso che tu abbia bisogno delle parentesi.
nohup $(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz) >/dev/null 2>&1 &
Forse un involucro bash?
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' &