pkill wysyła sygnał do procesów dopasowanych po nazwie albo innym kryterium — i robi to bez wcześniejszego sprawdzania PID-ów ręcznie. Zamiast bawić się w ps aux | grep, a potem przepisywać numer do kill, podajesz wzorzec nazwy procesu, a pkill sam znajduje pasujące procesy i je ubija. Domyślnie wysyła sygnał SIGTERM (15), czyli grzeczną prośbę o zamknięcie. To bliźniak pgrep: ta sama logika dopasowania, tylko zamiast wypisać PID-y, od razu strzela sygnałem.
Składnia i najważniejsze opcje
Podstawowa składnia: pkill [-SYGNAŁ] [opcje] wzorzec
-SIGNAL/--signal SIGNAL— sygnał do wysłania, numerycznie lub po nazwie (np.-9,-SIGKILL). Domyślnie SIGTERM.-f— dopasowuje do całej linii poleceń, nie tylko do nazwy procesu. Niezbędne, gdy szukasz np. konkretnego skryptu uruchomionego przezpython.-x— dopasowanie dokładne: nazwa (lub linia poleceń przy-f) musi pasować w całości, nie jako fragment.-u user— tylko procesy danego użytkownika (efektywny UID);-U userbierze realny UID.-n/-o— tylko najnowszy / najstarszy z dopasowanych procesów.-c— nie ubija, tylko wypisuje liczbę dopasowanych procesów (świetne do podejrzenia przed strzałem).-i— ignoruje wielkość liter we wzorcu.-t term— tylko procesy podpięte do danego terminala (np.pts/2).
Przykłady użycia
pkill firefox— wysyła SIGTERM do wszystkich procesów o nazwie zawierającej „firefox”. Najczęstszy scenariusz: zawieszona przeglądarka.pkill -9 -f node— ubija na twardo (SIGKILL) każdy proces, którego linia poleceń zawiera „node”. Przydatne, gdy aplikacja Node nie chce zejść po grzecznym sygnale.pkill -u www-data nginx— ubija procesynginxnależące do użytkownikawww-data, nie ruszając cudzych.pkill -f "python manage.py runserver"— celuje w konkretny skrypt Django po pełnej linii poleceń, mimo że proces nazywa się po prostupython.pkill -c -f backup.sh— najpierw policz, ile procesów pasuje, zanim cokolwiek ubijesz.
Częste błędy i pułapki
Najgroźniejszy błąd to zbyt szeroki wzorzec. pkill -9 ssh potrafi ubić twoją własną sesję SSH razem z demonem — zanim wpiszesz -9, sprawdź dopasowanie przez pgrep -a ssh. Pamiętaj też, że bez -x wzorzec jest fragmentem: pkill chrome trafi też w chromedriver.
Z -f jest dodatkowa pułapka — sam pkill nie ma prawa dopasować siebie (procps to filtruje), ale inne komendy z tym samym słowem w linii poleceń już tak. Domyślny SIGTERM daje procesowi szansę na sprzątnięcie; -9 (SIGKILL) ucina natychmiast i bez litości, więc używaj go dopiero, gdy grzeczny sygnał zawiódł. Na macOS/BSD pkill istnieje, ale część flag (np. składnia -U) różni się od linuksowego procps — w razie wątpliwości zajrzyj do lokalnego man pkill.