2014-11-13 22 views

cevap

35

Hayır, ayrı ayrı komutlara nohup eklemeniz gerekir. Böyle

şey önerilir:

nohup sh -c "cmd1 | cmd2" & 

Veya alternatif:

nohup $SHELL <<EOF & 
cmd1 | cmd2 
EOF 
+0

Birisi, 'SHELL' nedir ve neden ihtiyacımız olduğunu açıklayabilir mi? –

+1

'$ SHELL 'şu anda çalışan kabuğunuzu içerir, çoğu Linux sisteminde bu'/bin/bash' olacaktır, ancak '/ usr/bin/zsh' veya başka bir şey olabilir. '$ SHELL' değişkenini kullanmanın avantajı, bu şekilde komutun normal kabuk ayarlarınız kullanılarak yürütülmesidir. – Wolph

+0

'EOF &' benim için çalışmıyor. – RoVo

0
nohup cmd1 | cmd2 & 

nohup: ignoring input and redirecting stderr to stdout 
+0

Bağlantı öldü. –

+0

@JasmineLognnes bağlantısı, cevabımla birlikte gönderilen aynı hata mesajını içerir. – Skynet

7

Farklı şöyle şudur Hayır, sadece şu an kontrol ettikten'e bir alternatif, ben terminalden Stdin, stdout'u ve Sterr yeniden yönlendirme ile

(cmd1 | cmd2) > logfile < /dev/null 2>&1 & 

tavsiye şu kadarını, en azından, tercih bir söz dizimi ile nohup aynı etkiye.

+8

Bu, "nohup" gibi HUP sinyalinden gelen komutu korumaz. Bunu yapmak için '(trap" HUP; cmd1 | cmd2) logfile 2> & 1 & ''ye ihtiyacınız var. –

+1

Doğru, ancak yazıldıkça, kapanış terminalinin HUP'u sürece ilk etapta göndermesini önler. –

İlgili konular