Söylediği gibi, arayanın işlem grubunun tüm üyelerine sinyal gönderir.
İşlem grupları kabukta iş kontrolünü uygulamak için kullanılır (başka şeyler için kullanılabilirler, ancak etkileşimli kabuk işi kontrolü varlıklarının temel nedenidir).
Yazarken Ctrl-C, mevcut işlerin tüm işlemlerinin yalnızca onları başlatan değil öldürüldüğünü fark edeceksiniz . Ayrıca, bu arka plan işlerini öldürmez.
Bu süreç grupları ile elde edilir. Bir iş, kabuğun arka plan veya ön plana koyabileceği (terminalin ön plan işlem grubu olarak belirlenebilir) veya bir bütün olarak öldürdüğü bir kabuk tarafından başlatılan bir süreçler grubudur.
Sen ile işlem grubu kimliğine ve oturum kimlikleri hakkında bilgi bulabilirsiniz ps -j( jiçin Job kontrol).
PGID işlem grubunu öldürmek için $x:
kill -- "-$x"
kill 0 Arayanın işlem grubunu öldürür.
Bunu yaparsanız: /bin/kill 0kabuk, bu killkomutu çalıştırmak için yeni bir iş başlatacak kill, sadece kendini öldürecektir.
killgenellikle yerleşik bir kabuk olsa da, kabuğun killişlem grubunu öldürecektir.
Bununla birlikte, kabuk etkileşimli olduğunda, işlem gruplarını yöneten işlemdir, bu nedenle tipik olarak kabuğun işlem grubunda başka bir işlem yoktur. Kabuk tarafından başlatılan tüm işlemler, diğer işlem gruplarındadır:
$ sleep 1000 &
[1] 22746
$ ps -j
PID PGID SID TTY TIME CMD
22735 22735 22735 pts/23 00:00:00 zsh
22746 22746 22735 pts/23 00:00:00 sleep
22749 22749 22735 pts/23 00:00:00 ps
Yukarıda sleepve psiki farklı işlem grubunda, biri arka planda, biri ön planda ve kabuğun işlem grubundan farklı.
Yine de yapabilirsin:
(man kill & sleep 1; ps -j; kill 0)
Etkileşimli kabuk, bu alt kabuk için yeni bir işlem grubuna başlayacak ve hem alt kabuk hem de adam (ve çağrı cihazınız, groff… gibi bir adam tarafından başlatılan diğer komutlar) aynı işlem grubunda kill 0olacaktı , orada da çalışacaktı. ( sleepYukarıdaki çağrı cihazının başlaması için yeterli zaman vermek, böylece onu ps -jöldürmeden önce çıktıda görebiliriz ).
SIGTERMYaptığı sürece bir a gönderir .manKomut bunu görmezden seçmiştir.