Jak mówi, wysyła sygnał do wszystkich członków grupy procesów dzwoniącego.
Grupy procesów służą do implementacji kontroli zadań w powłoce (można ich używać do innych celów, ale interaktywna kontrola zadań powłoki jest głównym powodem ich istnienia).
Zauważysz, że podczas pisania Ctrl-Cwszystkie procesy bieżących zadań są zabijane, nie tylko te, które je rozpoczęły. To również nie zabija zadań w tle.
Osiąga się to dzięki grupom procesów. Zadanie to grupa procesów uruchamianych przez powłokę, którą powłoka może umieścić w tle lub na pierwszym planie (ustawiona jako grupa procesów na pierwszym planie w terminalu lub nie) i zabić jako całość.
Możesz dowiedzieć się o identyfikatorach grup procesów i identyfikatorach sesji za pomocą ps -j
( j
dla Jkontroli ob).
Aby zabić grupę procesów PGID $x
:
kill -- "-$x"
kill 0
zabija grupę procesów dzwoniącego.
Zauważ, że jeśli to zrobisz: /bin/kill 0
powłoka rozpocznie nowe zadanie w celu wykonania tego kill
polecenia, więc kill
tylko się zabije.
kill
jest zwykle wbudowaną powłoką, więc kill
zabije grupę procesów powłoki.
Jednak gdy powłoka jest interaktywna, jest to grupa procesów zarządzająca procesami, więc zazwyczaj nie ma innego procesu w grupie procesów powłoki. Wszystkie procesy uruchomione przez powłokę znajdują się w innych grupach procesów:
$ 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
Powyżej, sleep
i ps
to w dwóch różnych grup procesów, po jednym w tle, po jednym na pierwszym planie i są one różne od grupy procesu powłoki.
Możesz zrobić:
(man kill & sleep 1; ps -j; kill 0)
Interaktywna powłoka uruchomiłaby nową grupę procesów dla tej podpowłoki, a zarówno podpowłoka, jak i man (oraz inne polecenia uruchomione przez man, takie jak pager, groff ...) byłyby w tej samej grupie procesów, więc kill 0
działałyby tam. ( sleep
powyższe ma dać wystarczająco dużo czasu na uruchomienie pagera, abyśmy mogli zobaczyć go na ps -j
wyjściu, zanim go zabijemy).
SIGTERM
do procesu, który wykonał.man
Polecenie wybrano je zignorować.