CentOS - polecenie killall (aby zabić wszystkie procesy o nazwach pasujących do danego wzorca)


18

Niedawno zacząłem używać CentOS. Poszedłem, aby spróbować użyć killallnarzędzia, ale znalazłem, że go brakuje, i otrzymuję command not foundkomunikat, gdy próbuję go użyć. Jak mogę uzyskać tę funkcjonalność w moim systemie, aby na przykład zabić wszystkie procesy, których nazwy pasują do wzorca?

Odpowiedzi:


24

pkillUżyteczność jest znacznie lepszą alternatywą killall. killallnie jest przenośny, ponieważ zachowanie polecenia jest bardzo różne w różnych systemach operacyjnych. pkilljest przenośny i wszędzie zachowuje się tak samo. Jest również o wiele bardziej elastyczny, ponieważ zapewnia wiele różnych sposobów dopasowania procesów. Działa również tak samo pasujące zachowanie i argumenty jak pgrepnarzędzie , co pozwala zobaczyć, które procesy zostaną dopasowane i zasygnalizowane bez faktycznej ich sygnalizacji.

Sposób użycia: pkill foo(który byłby taki sam jak killall foo)


2
Myślę, że ta odpowiedź byłaby lepsza, gdyby pokazała, jak dokładnie można jej użyć do zastąpienia killall.
exebook

Jednak nie wszystkie wdrożenia pgrepobsługują -qopcję bycia cichym.
Kusalananda

również byłoby lepiej, gdyby opisał, którego pakietu jest częścią
Xalorous

21

PSmisc zawiera killallnarzędzie wraz z kilkoma innymi małymi, przydatnymi narzędziami. Można go dodać po prostu za pomocą

yum install psmisc

2

Oprócz rozwiązania Patricka funkcjonalność polecenia killall można replikować w następujący sposób:

pkill -15 [process name]

Na przykład, aby zabić wszystkie uruchomione procesy memcached, należy napisać:

pkill -15 memcached

„-15” to numeryczna reprezentacja sygnału SIGTERM POSIX. Aby uzyskać listę wszystkich sygnałów POSIX, które można odpalić w procesie, użyj następującego polecenia:

kill -l

Spowoduje to zwrócenie następującej tabeli:

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL      10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Więcej informacji na temat działania każdego sygnału można znaleźć tutaj .


Zauważ, że domyślnie killallwysyła TERMsygnał, a nie KILL.
Kusalananda


1
Słuszna uwaga. Edytowane.
Daniel Kay

Dlaczego dokonałeś edycji tylko po to, by usunąć „Mam nadzieję, że to pomoże!” od końca, @Rui F Ribeiro? Czy istnieją zasady społeczności przeciw próbowaniu uprzejmości?
Daniel Kay

0

Wyobrażam sobie, że systemową alternatywą jest systemctl halt(skrót od systemctl isolate halt.target)?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.