Nejjednodušší řešení:Vytvořte skript shellu pomocí
#/bin/sh
tar -zcf archive.tar.gz.tmp mydir
mv archive.tar.gz.tmp archive.tar.gz
A použijte nohup myscript
. Možná s nějakou další dokumentací ve skriptu.
(Ano, mám rád dokumentaci. Zvláště když pracujete s více lidmi nebo když můžete jednoho dne opustit práci a váš nástupce musí zjistit proč.)
Alternativou může být spuštění nového shellu pro dílčí úlohu (v tomto případě váš tar a přesun)
nohup `$(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz)
Alternativa 2:
nohup ```tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz```.
Ale opravdu preferuji scénář. Komentáře v něm mohou být docela užitečné, až se vy nebo někdo jiný za pár let podívá na jeho scénář a bude se divit, proč to bylo uděláno tímto způsobem.
Na nesouvisející poznámku:Jak mám sakra poslat anser se zadním zaškrtnutím? (Příkaz pro shell, který má 'použít tento příkaz; vložit výstup do jiného příkazu jako vstup`).
Myslím, že potřebujete závorky.
nohup $(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz) >/dev/null 2>&1 &
Možná 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' &