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-Zdan 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 pstreemenunjukkan bahwa itu "diadopsi" oleh init.
Apakah ini perilaku yang diharapkan?
Tapi kalau begitu, apa tujuan nohupperintah 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
nohupdan / atau&; itu kemudian ditangguhkanCTRL-Zdan dilanjutkan di latar belakang denganbg. - Sesi ssh tidak turun. Ada logout ("
exit" perintah) yang sebenarnya. - Prosesnya adalah
scpoperasi penyalinan file. - Setelah masuk lagi,
pstreemenunjukkan 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 nohupperintah?
Edit 3
Saya mencoba mengirim SIGHUPke scp: keluar secara manual , jadi pasti tidak mengabaikan sinyal.
Kemudian saya mencoba lagi meluncurkannya, meletakkannya di latar belakang dan log off: itu "diadopsi" oleh initdan terus berjalan, dan saya menemukannya di sana ketika masuk kembali.
Saya cukup bingung sekarang. Sepertinya tidak SIGHUPdikirim sama sekali sampai log off.
1>/dev/null 2>&1untuk bash, dll?