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?

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)


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

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 .


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)?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.