Sorunuz kendine cevap veriyor, çünkü bu işlemler terminal öykünücüsünün altında çocuk olarak çalışıyor. Böylece terminal öykünücüsünü öldürürsünüz ve bunu yaparken tüm çocuk süreçlerini öldürürsünüz (çocuklar kontrol eden terminal öykünücüsü ile aynı işlem grubunda çalıştığından).
Örneğin, aşağıdakilere bakın:
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 }
Tüm bu işlemler 'xfce4-terminal' süreçleri altında çalışıyor, bu yüzden bu işlemi öldürürsem, süreç grubundaki tüm alt işlemleri otomatik olarak öldürür ... aynı şekilde, örneğin, terminal öykünücü penceresinden çıkma mutlaka SSH bağlantımı öldür.
Kabuklar gibi programlar, genellikle ilgili alt işlemleri bir gruba yerleştirerek yeni işlem grupları oluşturur. Her iş bir süreç grubudur. Çekirdeğin dışında, bir kabuk, bir süreç grubundaki tüm süreçlere bir sinyal gönderen killpg sistem çağrısı ile işin süreç grubuna sinyaller göndererek işi işler.