Ваше запитання відповідає самому собі, це відбувається тому, що ці процеси працюють під дітьми під емулятором терміналу. Таким чином, ви вбиваєте емулятор терміналу, і роблячи це, вбиваєте всі дочірні процеси (оскільки діти працюють під тією ж групою процесів, що і емулятор терміналу керування).
Дивіться, наприклад, таке:
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 }
Усі ці процеси виконуються під процесами 'xfce4-terminal', тож якщо я вбиваю цей процес, він автоматично знищить усі дочірні процеси в групі процесів ... таким же чином, як, наприклад, що вихід із вікна емулятора термінала обов'язково вбити моє SSH-з'єднання.
Такі програми, як оболонки, створюють нові групи процесів, зазвичай розміщуючи пов'язані дочірні процеси в групі. Кожне завдання - це процесна група. Поза ядром оболонка маніпулює завданням, надсилаючи сигнали до групи процесів завдання за допомогою системного виклику killpg, який подає сигнал до всіх процесів у групі процесів.