Biarkan kami mempertimbangkan Anda telah membuka gedit
editor teks dari terminal dan bekerja di sana. Jika Anda menutup terminal sebelum menutup gedit
, gedit juga akan ditutup segera setelah menutup terminal. Jadi apa yang terjadi di sini? The gedit
berjalan sebagai proses anak di bawah terminal. Ketika Anda menutup terminal, sinyal menggantung ( SIGHUP
) dikirim ke proses yang membunuh proses anak.
Di sisi lain, jika Anda ingin proses anak Anda (di sini gedit
) tetap berjalan bahkan setelah menutup terminal induk, Anda ingin proses Anda kebal terhadap sinyal hangup. Sehingga menutup terminal jangan menutup proses anak. nohup
melakukan pekerjaan ini dengan tepat.
nohup
tidak memutuskan perintah dari terminal , itu membuat skrip Anda mengabaikan SIGHUP, dan mengalihkan stdout / stderr ke file nohup.out, sehingga perintah dapat terus berjalan di latar belakang setelah Anda logout. Jika Anda menutup shell / terminal atau logout, perintah Anda bukan lagi anak dari shell itu. Itu milik proses init. Jika Anda mencari di dalam, pstree
Anda akan melihatnya sekarang dimiliki oleh proses 1 (init). Itu tidak dapat dibawa kembali ke latar depan karena latar depan tidak ada lagi.
disown
adalah alternatif yang lebih baiknohup
. Latar belakang perintah dengancommand &
atauCtrl-Z
, lalu gunakandisown
untuk melepaskannya dari shell.