Secara umum, ketika suatu proses menjadi yatim piatu (yaitu, orang tuanya mati) ia diadopsi oleh init.
Situasi khusus yang Anda gambarkan mungkin berlaku untuk proses interaktif ketika terminal pengontrolnya ditutup (dari Wikipedia ):
Sinyal SIGHUP dikirim ke proses ketika terminal pengendali ditutup. Awalnya dirancang untuk memberi tahu proses penurunan garis serial. Dalam sistem modern, sinyal ini biasanya berarti bahwa mengendalikan terminal semu atau virtual telah ditutup.
Untuk mencegah hal ini, proses anak harus memblokir SIGHUP, jadi dalam kebanyakan kasus Anda membutuhkan kerja sama dari proses induk.
Jika proses induknya adalah shell ( bash
, csh
dan sejenisnya) dan Anda ingin perintah yang Anda jalankan tidak berakhir ketika bash selesai, Anda bisa mengawali setiap perintah dengan nohup
(dari info coreutils "nohup invocation"
):
'nohup' menjalankan PERINTAH yang diberikan dengan sinyal hangup diabaikan, sehingga perintah dapat terus berjalan di latar belakang setelah Anda logout.
Dalam contoh ini:
$ tty
/dev/ttys000
$ nohup find /dir -name file -exec rm {} \;
find
tidak akan terbunuh ketika shell mengakhiri dan menutup terminal pengendali /dev/ttys000
.
Jika skrip shell harus memblokir SIGHUP, gunakan builtin trap
, seperti yang dijelaskan di sini untuk bash
.