killall

Zabija wszystkie procesy o podanej nazwie.

killall to linuksowe polecenie z pakietu psmisc, które zabija procesy wskazane po nazwie, a nie po numerze PID. Zamiast szukać identyfikatora przez ps i ręcznie celować w kill, podajesz po prostu nazwę programu, a killall ubije wszystkie pasujące instancje naraz. Domyślnie wysyła sygnał SIGTERM (grzeczna prośba o zamknięcie), ale możesz wskazać dowolny inny. Idealne, gdy jakiś chrome albo node rozmnożył się w pięciu kopiach i pożera RAM.

Składnia i najważniejsze opcje

Podstawowa składnia wygląda tak: killall [-SYGNAŁ] nazwa...

  • -s, --signal — wskazuje sygnał do wysłania, np. -s KILL lub -9 (zamiast domyślnego SIGTERM).
  • -i, --interactive — pyta o potwierdzenie przed zabiciem każdego procesu. Dobre, gdy nie jesteś pewien zakresu.
  • -e, --exact — wymaga dokładnego dopasowania nazwy, istotne przy bardzo długich nazwach procesów (powyżej 15 znaków).
  • -I, --ignore-case — dopasowanie nazwy bez rozróżniania wielkości liter.
  • -r, --regexp — traktuje wzorzec jako rozszerzone wyrażenie regularne.
  • -u, --user — zabija tylko procesy należące do wskazanego użytkownika.
  • -w, --wait — czeka, aż wszystkie ubite procesy faktycznie znikną.
  • -o, --older-than / -y, --younger-than — celuje w procesy starsze/młodsze niż podany czas (jednostki: s,m,h,d,w,M,y).

Przykłady użycia

  • killall firefox — wysyła SIGTERM do wszystkich procesów o nazwie firefox, dając im szansę na czyste zamknięcie.
  • killall -9 chrome — twardo (SIGKILL) ubija wszystkie procesy chrome, gdy te zawiesiły się i nie reagują na grzeczne prośby.
  • killall -i node — przed każdym zabiciem pyta o potwierdzenie, więc nie ubijesz przypadkiem czegoś ważnego.
  • killall -u janek — zamyka wszystkie procesy uruchomione przez użytkownika janek, np. przy sprzątaniu sesji.
  • killall -o 1h python — ubija tylko te procesy python, które działają dłużej niż godzinę (zawieszone długie zadania).

Częste błędy i pułapki

Największa mina to różnice między systemami. Na klasycznym Solarisie (i starym Uniksie) killall robi dokładnie to, co sugeruje nazwa — zabija wszystkie procesy i kładzie system, bo to narzędzie do zamykania przy reboo­cie. Na Linuksie i macOS działa po nazwie, ale flagi się różnią (macOS ma wersję z BSD, bez -o/-y w tej formie). Druga pułapka: nazwa procesu nie zawsze jest tym, co widzisz w terminalu — sprawdź ją wcześniej przez ps lub pgrep. Pamiętaj też, że nazwy dłuższe niż 15 znaków bywają obcinane, dlatego przy nich przydaje się -e. I nie strzelaj od razu -9SIGKILL nie pozwala procesowi posprzątać, co grozi uszkodzeniem plików czy bazy.

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