Sua pergunta é respondida, isso acontece porque esses processos estão sendo executados como filhos no emulador de terminal. Então, você mata o emulador de terminal e, ao fazer isso, mata todos os processos filhos (já que os filhos estão executando sob o mesmo grupo de processos que o emulador de terminal de controle).
Veja, por exemplo, o seguinte:
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 }
Todos esses processos estão sendo executados sob os processos 'xfce4-terminal', portanto, se eu eliminar esse processo, ele matará automaticamente todos os processos filhos no grupo de processos ... da mesma maneira, por exemplo, que sai do terminal a janela do emulador necessariamente mataria minha conexão SSH.
Programas como shells criam novos grupos de processos, geralmente colocando processos filhos relacionados em um grupo. Cada trabalho é um grupo de processos. Fora do kernel, um shell manipula um trabalho enviando sinais para o grupo de processos do job com a chamada do sistema killpg, que fornece um sinal para todos os processos em um grupo de processos.