Pertanyaan Anda menjawab sendiri, ini terjadi karena proses ini berjalan sebagai anak-anak di bawah terminal emulator. Jadi Anda membunuh emulator terminal, dan dengan melakukannya, bunuh semua proses anak-anak (karena anak-anak berjalan di bawah kelompok proses yang sama dengan emulator terminal pengendali).
Lihat, misalnya, berikut ini:
csb@darwin[~]$ ps fauwx | grep -A6 "xfce4-terminal" | awk '{ for (i = 2; i <= 9; i++) $i="" ; print $0 }'
csb 0:32 xfce4-terminal --geometry=271x65 --display :0.0 --role=Terminal-0x1340050-2606-1351620352 --show-menubar --show-borders --hide-toolbars --working-directory /home/csb --tab --working-directory /home/csb
csb 0:00 \_ gnome-pty-helper
csb 0:00 \_ bash
csb 0:00 |
\_ ssh [redacted]
csb 0:00 \_ bash
csb 0:00 \_ ps fauwx
csb 0:00 \_ grep --color=auto -A6 xfce4-terminal
csb 0:00 \_ awk { for (i = 2; i <= 9; i++) $i="" ; print $0 }
Semua proses ini berjalan di bawah proses 'xfce4-terminal', jadi jika saya membunuh proses itu maka akan membunuh secara otomatis semua proses anak dalam kelompok proses ... dengan cara yang sama, misalnya, yang keluar dari jendela terminal emulator akan tentu membunuh koneksi SSH saya.
Program seperti cangkang membuat grup proses baru, biasanya menempatkan proses anak terkait ke dalam grup. Setiap pekerjaan adalah kelompok proses. Di luar kernel, shell memanipulasi pekerjaan dengan mengirimkan sinyal ke grup proses pekerjaan dengan panggilan sistem killpg, yang mengirimkan sinyal ke semua proses dalam grup proses.