Der Befehl pkill sendet Signale an Prozesse basierend auf deren Namen oder anderen Attributen. Anders als bei kill brauchst du keine Prozess-ID (PID) zu kennen.

pkill gehört zum procps-Paket und ist auf den meisten Systemen vorinstalliert. Der Befehl arbeitet intern mit pgrep zusammen, das passende Prozesse findet.

Syntax des pkill-Befehls

pkill [OPTIONEN] MUSTER
  • OPTIONEN - Flags, die das Verhalten ändern (Signal, Benutzer, etc.).
  • MUSTER - Ein erweiterter regulärer Ausdruck, der auf Prozessnamen passt.

Grundlegende Verwendung

Ohne weitere Optionen sendet pkill das Signal TERM (15) an alle Prozesse, deren Name zum Muster passt:

pkill firefox

Der Befehl gibt den Exit-Code 0 zurück, wenn mindestens ein Prozess gefunden wurde, sonst 1. Das ist nützlich für Shell-Skripte.

Signale senden

Mit der Option --signal oder einem vorangestellten Signalnamen sendest du ein bestimmtes Signal:

pkill -HUP nginx
pkill --signal KILL firefox
pkill -9 chrome

Die wichtigsten Signale:

SignalNummerWirkung
HUP1Prozess neu starten (Konfiguration neu laden)
TERM15Prozess ordentlich beenden (Standard)
KILL9Prozess sofort beenden (erzwungen)

Eine vollständige Liste aller Signale erhältst du mit kill -l.

Signale kannst du auf drei Arten angeben:

  • Als Zahl: -9
  • Mit SIG-Präfix: -SIGKILL
  • Ohne Präfix: -KILL

Prozesse vor dem Beenden prüfen

pkill verwendet reguläre Ausdrücke. Bevor du Prozesse beendest, prüfe mit pgrep, welche Prozesse betroffen sind:

pgrep ssh

Ausgabe:

1039
2257
6850

Das zeigt alle Prozesse, die ssh im Namen enthalten - auch sshd oder ssh-agent.

Exakte Übereinstimmung erzwingen

Um nur Prozesse zu beenden, deren Name exakt dem Muster entspricht, verwende Regex-Anker:

pkill '^ssh$'

Das Caret (^) markiert den Zeilenanfang, das Dollarzeichen ($) das Ende. So triffst du nur ssh, nicht sshd oder ssh-agent.

Vollständige Befehlszeile durchsuchen

Standardmäßig vergleicht pkill nur den Prozessnamen. Mit -f durchsuchst du die gesamte Befehlszeile inklusive Argumenten:

pkill -9 -f "ping 8.8.8.8"

Bei Befehlen mit Leerzeichen musst du den gesamten Ausdruck in Anführungszeichen setzen.

Nach Benutzer filtern

Mit -u filterst du Prozesse eines bestimmten Benutzers:

pkill -u mark

Mehrere Benutzer trennst du mit Kommas:

pkill -u mark,danny

Optionen kombinieren

Du kannst mehrere Filter kombinieren. Dieses Beispiel sendet KILL an alle gnome-Prozesse des Benutzers mark:

pkill -9 -u mark gnome

Neueste oder älteste Prozesse beenden

Mit -n (newest) triffst du nur den zuletzt gestarteten Prozess, mit -o (oldest) den ältesten:

pkill -9 -n screen

Das beendet nur die neueste screen-Session, nicht alle.

Zusammenfassung

Der Befehl pkill beendet Prozesse anhand ihres Namens statt der PID. Mit Optionen wie -u für Benutzer, -f für die vollständige Befehlszeile oder -n/-o für zeitliche Filterung lassen sich Prozesse gezielt auswählen. Verwende pgrep mit denselben Optionen, um vor dem Beenden zu prüfen, welche Prozesse betroffen sind.

Verwandte Artikel