kill wysyła sygnał do procesu wskazanego przez PID. Mimo nazwy jego zadaniem nie jest „zabijanie”, tylko dostarczenie sygnału — domyślnie SIGTERM (15), czyli grzeczna prośba „zakończ się i posprzątaj po sobie”. Proces może ten sygnał przechwycić, zamknąć pliki, zapisać dane i wyjść. Dopiero gdy ignoruje uprzejmości, sięgasz po mocniejsze sygnały. To podstawowe narzędzie do zarządzania procesami w Linuksie, dostępne jako polecenie wbudowane powłoki i jako osobny program (/bin/kill).
Składnia i najważniejsze opcje
Podstawowa składnia: kill [-SYGNAŁ] PID...
-15/-TERM— sygnał domyślny, prosi proces o zakończenie (można go przechwycić).-9/-KILL— twardy ubój, sygnału nie da się przechwycić ani zignorować. Ostateczność.-1/-HUP— często używany do przeładowania konfiguracji demona bez restartu.-2/-INT— to samo co Ctrl+C w terminalu (przerwanie).-s SYGNAŁ— podaj sygnał po nazwie, np.-s SIGTERM.-l— wypisz listę dostępnych sygnałów (przyda się, gdy zapomnisz numeru).-0— nie wysyła żadnego sygnału, tylko sprawdza, czy proces istnieje i czy masz uprawnienia.
Przykłady użycia
kill 4521— wysyła SIGTERM do procesu o PID 4521 (najczęstszy przypadek).kill -9 4521— bezwarunkowo ubija proces, który zawisł i nie reaguje na TERM.kill -HUP 4521— każe demonowi (np. nginx) przeładować konfigurację.kill -0 4521— sprawdza, czy proces żyje, nic nie wysyłając (przydatne w skryptach).kill -- -4521— ujemny PID celuje w całą grupę procesów o tym ID.
Częste błędy i pułapki
Nie zaczynaj od -9. SIGKILL nie daje procesowi szansy na posprzątanie, więc możesz zostawić niezapisane dane, uszkodzone bazy czy osierocone pliki blokad. Najpierw TERM, dopiero potem KILL. Operation not permitted oznacza, że proces należy do innego użytkownika — potrzebujesz sudo. No such process to znak, że PID już nie istnieje (sprawdź ps). Pamiętaj też, że kill oczekuje PID-u, a nie nazwy programu — do operowania nazwami służą pkill i killall. Uwaga na grupy: kill -9 -1 jako root wyśle sygnał do wszystkich procesów, do jakich ma uprawnienia, czyli potrafi wylogować cały system. Numery sygnałów bywają zależne od architektury, więc w skryptach bezpieczniej używać nazw (-TERM) niż liczb.
Powiązane komendy: pkill, killall, ps, top, htop, jobs, trap.