pkill

Wysyła sygnał do procesów dopasowanych po nazwie lub innym kryterium.

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 przez python.
  • -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 user bierze 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 procesy nginx należące do użytkownika www-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 prostu python.
  • 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.

Powiązane komendy: pgrep, kill, killall, ps, top, htop.