KILL(1) | Polecenia użytkownika | KILL(1) |
NAZWA
kill - kończy proces
SKŁADNIA
kill [-sygnał|-s sygnał|-p] [-q wartość] [-a] [--timeout milisekundy sygnał] [--] pid|nazwa...
kill -l [liczba|0xmaska-sygnałów] | -L
kill -d pid
OPIS
Polecenie kill wysyła podany sygnał do określonych procesów lub grupy procesów.
Jeśli nie określi się sygnału, wysyłany jest sygnał TERM. Domyślną akcją tego sygnału jest przerwanie procesu. Sygnał ten powinien być preferowany wobec sygnału KILL (o numerze 9), ponieważ proces może zainstalować procedurę obsługi sygnału TERM, aby powziąć kroki w celu posprzątania, przed zakończeniem w uporządkowany sposób. Jeśli proces nie zakończy się po wysłaniu sygnału TERM, wtedy można użyć sygnału KILL; proszę mieć na uwadze, że ten ostatni sygnał nie może być przechwycony, zatem nie daje możliwości dokonania jakiegokolwiek sprzątania przed zakończeniem procesu.
Większość współczesnych powłok ma wbudowane polecenie kill, którego stosowanie jest zbliżone do opisywanego tu polecenia. Opcje --all, --pid i --queue oraz możliwość określenia procesów nazwą polecenia, są lokalnymi rozszerzeniami.
Jeśli sygnał wynosi 0, to nie jest wysyłany żaden sygnał, lecz sprawdzanie pod kątem wystąpienia błędów jest wciąż przeprowadzane.
ARGUMENTY
Lista procesów, które mają otrzymać sygnał, może zawierać przemieszane nazwy i identyfikatory procesów.
pid
n
0
-1
-n
nazwa
OPCJE
-s, --signal sygnał
-l, --list [liczba|0xmaska-sygnałów]
$ ps s $$ UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND 1000 1608069 0000000000000000 0000000000000002 0000000000384000 0000000008013003 Ss pts/44 0:02 zsh $ kill -l 0x0000000000384000 TERM TSTP TTIN TTOU
-L, --table
-a, --all
-p, --pid
-r, --require-handler
--verbose
-q, --queue wartość
--timeout milisekundy sygnał
Proszę zauważyć, że system operacyjny może użyć ponownie danego PID-u, zatem zaimplementowanie równoważnej funkcji w powłoce, za pomocą kill i sleep mogłoby powodować wyścig, gdzie kolejny sygnał zostałby wysłany do innego procesu, który otrzymał odzyskany numer identyfikatora procesu.
Opcję --timeout można podać wielokrotnie: sygnały są wysyłane kolejno po minięciu podanych czasów przeterminowania. Opcję --timeout można łączyć z opcją --queue.
W poniższym przykładzie, polecenie wyśle kolejno sygnały QUIT, TERM i KILL, odczekując po 1000 milisekund pomiędzy nimi:
kill --verbose --timeout 1000 TERM --timeout 1000 KILL \ --signal QUIT 12345
-d, --show-process-state pid
$ kill -d $$ Zablokowany: INT Zignorowany: TERM TSTP TTIN TTOU Złapany: HUP INT PIPE ALRM CHLD WINCH
STATUS ZAKOŃCZENIA
kill ma następujące wartości statusu zakończenia:
0
1
64
UWAGI
Choć można podać TID (identyfikator wątku - thread ID; zob. gettid(2)) jednego z wątków procesu wielowątkowego jako argument kill, sygnał jest i tak skierowany wobec procesu (tj. całej grupy wątków). Innymi słowy, nie da się wysłać sygnału jedynie do ściśle określonego wątku procesu wielowątkowego. Sygnał zostanie dostarczony do wybranego w sposób dowolny wątku procesu docelowego, który nie blokuje sygnału. Więcej szczegółów opisano w podręczniku signal(7) oraz w opisie CLONE_THREAD w podręczniku clone(2).
Poszczególne powłoki udostępniają wbudowane polecenie kill, które ma pierwszeństwo wobec pliku wykonywalnego kill(1) opisywanego w niniejszym podręczniku. Najłatwiejszym sposobem zapewnienia, że wykona się polecenie tu opisane, jest użycie pełnej ścieżki przy wywołaniu polecenia np. /bin/kill --version
AUTORZY
Salvatore Valente <svalente@mit.edu>, Karel Zak <kzak@redhat.com>
Pierwotną wersję zapożyczono z BSD 4.4.
ZOBACZ TAKŻE
bash(1), tcsh(1), sigaction(2), kill(2), sigqueue(3), signal(7) proc(5) proc_pid_status(5)
ZGŁASZANIE BŁĘDÓW
Problemy należy zgłaszać w systemie śledzenia błędów https://github.com/util-linux/util-linux/issues.
DOSTĘPNOŚĆ
Polecenie kill jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux https://www.kernel.org/pub/linux/utils/util-linux/.
2025-03-29 | util-linux 2.41 |