CentOS - killall Befehl (um alle Prozesse mit Namen abzubrechen, die einem bestimmten Muster entsprechen)

18

Ich habe kürzlich angefangen, CentOS zu benutzen. Ich habe versucht, das killallDienstprogramm zu verwenden, aber festgestellt, dass es fehlt. command not foundBei dem Versuch, es zu verwenden , erhalte ich eine Nachricht. Wie kann ich diese Funktionalität auf meinem System nutzen, um beispielsweise alle Prozesse abzubrechen, deren Namen mit einem Muster übereinstimmen?

Michael Ohlrogge
quelle

Antworten:

24

Das pkillDienstprogramm ist eine viel bessere Alternative zu killall. killallist nicht portierbar, da das Verhalten des Befehls unter den Betriebssystemen sehr unterschiedlich ist. pkillist portabel und verhält sich überall gleich. Es ist auch viel flexibler, da es viele verschiedene Möglichkeiten bietet, die Prozesse abzustimmen. Es hat auch dasselbe Übereinstimmungsverhalten und dieselben Argumente wie das pgrepDienstprogramm , sodass Sie sehen können, welche Prozesse übereinstimmen und signalisiert werden, ohne sie tatsächlich zu signalisieren.

Verwendung: pkill foo(das wäre das gleiche wie killall foo)

Patrick
quelle
2
Ich denke, diese Antwort wäre besser gewesen, wenn sie gezeigt hätte, wie genau man sie ersetzen kann killall.
Exebook
Nicht alle Implementierungen pgrepunterstützen die -qOption, leise zu sein.
Kusalananda
wäre auch besser, wenn es beschreiben würde, zu welchem ​​Paket es gehört
Xalorous
21

PSmisc enthält das killallDienstprogramm sowie einige andere kleine, nützliche Tools. Es kann einfach mit hinzugefügt werden

yum install psmisc
Michael Ohlrogge
quelle
2

Zusätzlich zu Patricks Lösung kann die Funktionalität des Befehls killall wie folgt repliziert werden:

pkill -15 [process name]

Um beispielsweise alle laufenden memcached-Prozesse abzubrechen, würde man Folgendes schreiben:

pkill -15 memcached

Das '-15' ist die numerische Darstellung eines SIGTERM POSIX-Signals. Verwenden Sie den folgenden Befehl, um eine Liste aller POSIX-Signale abzurufen, die bei einem Prozess ausgelöst werden können:

kill -l

Dies gibt die folgende Tabelle zurück:

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

Weitere Informationen zu den einzelnen Signalen finden Sie hier .

Daniel Kay
quelle
Beachten Sie, dass killalldas TERMSignal standardmäßig gesendet wird, nicht KILL.
Kusalananda
1
Guter Punkt. Bearbeitet
Daniel Kay
Warum haben Sie gerade bearbeitet, um "Hoffe, das hilft!" Zu entfernen? vom Ende, @Rui F Ribeiro? Gibt es Gemeinschaftsregeln gegen den Versuch, höflich zu sein?
Daniel Kay
0

Ich würde mir vorstellen, die systemd Alternative ist systemctl halt(kurz für systemctl isolate halt.target)?

Xalorous
quelle