Linux / Befehl pkill: Signale anhand des Prozessnamens senden
pkill sendet ein Signal an Prozesse, die einem Namen oder einer Bedingung entsprechen. Standardmäßig ist es SIGTERM, das die Beendigung anfordert, aber wenn der Name breit übereinstimmt, kann es mehrere unbeabsichtigte Prozesse beeinflussen.
Es verwendet Auswahlkriterien wie pgrep, aber anstatt die Ergebnisse anzuzeigen, sendet es ein Signal an das Ziel. Daher ist es sicher, zuerst pgrep -a mit denselben Kriterien auszuführen, um den Zielbenutzer und die Befehlszeile zu überprüfen.
Grundlegende Syntax
pkill [option] pattern
Die installierte Implementierung und die Optionen können je nach Distribution variieren. Überprüfen Sie die aktuelle Systembeschreibung mit man pkill.
Beispiele
Zuerst das Ziel überprüfen
Überprüfen Sie, ob der Prozessname genau übereinstimmt.
pgrep -a -x myworker
Standardmäßige Beendigungsanforderung
Senden Sie SIGTERM an Prozesse, die dem überprüften Namen entsprechen.
pkill -x myworker
Bereich nach Benutzer begrenzen
Wenn Prozesse mit demselben Namen unter mehreren Konten ausgeführt werden, geben Sie den Benutzer zusammen an.
pkill -u alice -x myworker
Überprüfung des Ergebnisses eines Beendigungsbefehls
pkill sendet ein Signal an Prozesse, die einem Namensmuster entsprechen. Selbst wenn es erfolgreich ist, wird in der Regel keine Liste von PIDs ausgegeben. Führen Sie daher zuerst pgrep mit denselben Kriterien aus, um das Ziel zu überprüfen.
pgrep -a -x demo-worker pkill -TERM -x demo-worker pgrep -a -x demo-worker
Die anfängliche Abfrage kann Testprozesse anzeigen, das Senden des Signals selbst erzeugt keine Ausgabe, und die endgültige Abfrage wird leer sein, wenn die Beendigung abgeschlossen ist. Das Senden eines Signals garantiert keine sofortige Beendigung, also überprüfen Sie es nach kurzer Zeit erneut.
-x beschränkt die Übereinstimmung auf den vollständigen Namen. Seien Sie besonders vorsichtig, wenn Sie -f verwenden, um die gesamte Befehlszeile zu durchsuchen, da das Muster weiter übereinstimmen kann. Wenden Sie die Beispiele nur auf die von Ihnen erstellten Testprozesse an und befolgen Sie die Betriebsverfahren für tatsächliche Dienste.
Hauptoptionen und Format
| Optionen/Format | Beschreibung |
|---|---|
-x |
Wählen Sie Prozesse aus, die genau mit dem vollständigen Namen übereinstimmen. |
-u user |
Begrenzen Sie das Ziel auf effektive Benutzer-IDs. |
-f |
Überprüfen Sie die gesamte Befehlszeile als Ziel. |
-TERM |
Senden Sie ausdrücklich SIGTERM. |
-e |
Zeigen Sie Informationen über das Ziel an, an das das Signal in unterstützten Implementierungen gesendet wurde. |
Vorsichtsmaßnahmen bei der Verwendung
pkill -f kann mehrere Aufgaben auswählen, wenn nur ein Teil der Befehlszeile übereinstimmt. Beim Verwalten von Diensten sollte nach Möglichkeit die normale Herunterfahrprozedur von Service-Management-Tools Priorität haben. SIGKILL überspringt Aufräumaufgaben, daher wird es normalerweise nicht als erste Wahl verwendet.
Häufig gestellte Fragen
Was ist der Unterschied zwischen pkill und pgrep?
pgrep findet PIDs, die den Kriterien entsprechen, während pkill tatsächlich Signale an Prozesse sendet, die den Kriterien entsprechen.
Offizielle Dokumentation
Sie können das genaue Verhalten der Optionen und Unterschiede je nach Implementierung in der offiziellen Dokumentation zu pkill nachprüfen.




