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 KILLlub-9(zamiast domyślnegoSIGTERM).-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łaSIGTERMdo 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 reboocie. 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 -9 — SIGKILL nie pozwala procesowi posprzątać, co grozi uszkodzeniem plików czy bazy.
Powiązane komendy: kill, pkill, pgrep, ps, top, htop.