Gönderen man nohup
:
Standart giriş bir terminalse, / dev / null'dan yönlendirin. Standart çıkış bir terminalse, nohup.out
mümkünse çıkışı ekleyin $HOME/nohup.out
. Standart hata bir terminalse, standart çıkışa yönlendirin. Çıktıyı FILE dosyasına kaydetmek için tuşunu kullanın nohup COMMAND > FILE
.
(bir yorumdan yola çıkarak tamamen revize edilir)
Bir kabuktan çıkarken veya bir terminali kapatırken, alt işlemlere terminalin daha uzun süre bağlı. Ayrıca, kabuk işlemi sona erdiğinde, alt işlemin stdin, stdout ve stderr akışları kapatılacaktır. Genellikle bu, çocuk sürecinin ölmesine neden olur. Genellikle bu iyi bir şeydir çünkü işlemlerin kullanıcısız çalışmasını engeller.
Programın amacı nohup
, kabuk sona erdikten ve terminal bağlantısı kesildikten sonra bile işlemi çalışmaya devam ettirmektir. Bu nedenle, çıkışını terminale yönlendirmek amacı tamamen yener. Benim asıl cevabım ( nohup COMMAND | cat
) işe yaramadı çünkü: terminal kapatıldığında, kedinin çıkışı kapatılır ve böylece kedi boruyu kıran ve nohup sürecine ölüme neden olan bir SIGPIPE gönderir. Soruyu, amacı düşünmeden cevaplamıştım.
Amacınıza ulaşmak için, nohup COMMAND > FILE
çıktıyı yönlendireceğiniz dosyanın adını seçmek üzere çalıştırın . Ardından tail -f FILE
bir terminaldeki çıkışı izlemek için düğmelerini kullanın .
Benzer şekilde, aşağıdaki kabuk yapısı da kullanılabilir: COMMAND >FILE 2>&1 </dev/null &
stdio akışları terminale bağlı olmayan ve terminal kapatıldıktan sonra çalışmaya devam edebilen bir komutu çalıştırmak için. Ayrıca, zsh içinde, disown
zsh'ye kabuk sona erdiğinde öldürmek yerine işlemi bırakmasını bildirmek için shell-yerleşkesini çalıştırın .