Menanyakan hal ini setelah diskusi yang panjang dengan rekan kerja, saya ingin klarifikasi di sini.
Saya meluncurkan proses latar belakang, baik dengan menambahkan " &
" ke baris perintah atau dengan menghentikannya CTRL-Z
dan melanjutkannya di latar belakang dengan " bg
". Lalu saya logout.
Apa yang terjadi?
Kami cukup yakin itu seharusnya dibunuh oleh SIGHUP, tetapi ini tidak terjadi; setelah masuk lagi, proses berjalan dengan gembira dan pstree
menunjukkan bahwa itu "diadopsi" oleh init
.
Apakah ini perilaku yang diharapkan?
Tapi kalau begitu, apa tujuan nohup
perintah itu? Sepertinya prosesnya tidak akan mati, dengan atau tanpa itu ...
Edit 1
Beberapa detail lebih lanjut:
- Perintah diluncurkan dari sesi SSH, bukan dari konsol fisik.
- Perintah diluncurkan tanpa
nohup
dan / atau&
; itu kemudian ditangguhkanCTRL-Z
dan dilanjutkan di latar belakang denganbg
. - Sesi ssh tidak turun. Ada logout ("
exit
" perintah) yang sebenarnya. - Prosesnya adalah
scp
operasi penyalinan file. - Setelah masuk lagi,
pstree
menunjukkan proses berjalan dan menjadi anakinit
.
Edit 2
Untuk menyatakan pertanyaan dengan lebih jelas: apakah menempatkan proses di latar belakang (menggunakan &
atau bg
) membuatnya diabaikan SIGHUP
, seperti halnya yang dilakukan nohup
perintah?
Edit 3
Saya mencoba mengirim SIGHUP
ke scp
: keluar secara manual , jadi pasti tidak mengabaikan sinyal.
Kemudian saya mencoba lagi meluncurkannya, meletakkannya di latar belakang dan log off: itu "diadopsi" oleh init
dan terus berjalan, dan saya menemukannya di sana ketika masuk kembali.
Saya cukup bingung sekarang. Sepertinya tidak SIGHUP
dikirim sama sekali sampai log off.
1>/dev/null 2>&1
untuk bash, dll?