Çalıştığını iddia eden bir kullanıcıdan yanıt okudum
foo 2>&1 >& output.log &
neden olacaktır foo
onlar çıkış yaptığınızda da çalışmaya devam. Bu kullanıcıya göre, bu SSH bağlantıları üzerinde bile çalıştı.
SSH ile bağlantıyı kesme veya TTY'yi sona erdirme durumunda, kabuğun ve dolayısıyla süreçlerinin bir SIGHUP alacağına inanıyorum. Bu, benim varsayımı altında, kullanılmasının tek sebebi oldu nohup
gibi durumlarda ya tmux
, screen
vd.
Sonra glibc'in el kitabına baktım :
Bu sinyal ayrıca bir terminaldeki kontrol sürecinin sonlandırılmasını o oturumla ilişkili işlere rapor etmek için kullanılır; bu sonlandırma oturumdaki tüm süreçleri kontrol terminalinden etkili bir şekilde ayırır.
Bu düşüncelerimi teyit ediyor gibi görünüyor. Ama daha ileriye baktığımızda diyor ki :
İşlem, kontrol terminali olan bir oturum lideriyse, ön plan işindeki her işleme bir SIGHUP sinyali gönderilir ve kontrol terminali bu oturumdan ayrılır.
Yani, demek işler olacak arka planda sokuyor değil SIGHUP alma?
Daha fazla karışıklığım için, etkileşimli bir Zsh oturumu yürüttüm, koştum yes >& /dev/null &
ve exit
yazdım, Zsh beni iş yaptığım konusunda uyardığında ve exit
ikinci bir kez yazdıktan sonra , bir işin SIGHUPed olduğunu söyledi. Bash'te tam olarak aynısını yapmak işi devam ettirir ...
logout
veyes
hala çalışıyor.