La solución más fácil:cree un script de shell con
#/bin/sh
tar -zcf archive.tar.gz.tmp mydir
mv archive.tar.gz.tmp archive.tar.gz
Y usa nohup myscript
. Posiblemente con alguna documentación extra en el script.
(Sí, soy un fanático de la documentación. Especialmente cuando trabajo con varias personas o cuando algún día podrías dejar el trabajo y tu sucesor necesita averiguar por qué).
Una alternativa podría ser iniciar un nuevo shell para una subtarea (en este caso, su tar y mover)
nohup `$(tar -zcf archivo.tar.gz.tmp midir; mv archivo.tar.gz.tmp archivo.tar.gz)
Alternativa 2:
nohup ```tar -zcf archive.tar.gz.tmp mydir; mv archivo.tar.gz.tmp archivo.tar.gz```.
Sin embargo, realmente prefiero el guión. Los comentarios que contiene pueden ser bastante útiles cuando usted u otra persona mire el guión dentro de unos años y se pregunte por qué se hizo de esta manera.
En una nota no relacionada:¿Cómo diablos publico una respuesta con un acento grave en ella? (El comando para un shell para 'usar este comando; enviar la salida a otro comando como entrada').
Creo que necesitas paréntesis.
nohup $(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz) >/dev/null 2>&1 &
¿Quizás una envoltura de 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' &