Die Dienstprogramme pgrep
und pkill
wurden in Solaris 7 von Sun eingeführt und verwenden, wie g33klord feststellte , ein Muster als Argument, das mit den Namen der ausgeführten Prozesse abgeglichen wird. Während pgrep
lediglich eine Liste übereinstimmender Prozesse gedruckt wird, pkill
wird das angegebene Signal (oder SIGTERM
standardmäßig) an die Prozesse gesendet . Die gemeinsamen Optionen und Semantiken zwischen pgrep
und sind pkill
nützlich, wenn Sie vorsichtig sein und zuerst die Prozesse für den Listenabgleich mit überprüfen pgrep
und dann mit beenden möchten pkill
. pgrep
und pkill
werden durch die die zur Verfügung gestellten procps Paket, das auch andere bietet /proc
Dateisystemdienstprogramme, wie zum Beispiel ps
, top
, free
, uptime
unter anderem.
Der killall
Befehl wird vom psmisc- Paket bereitgestellt und unterscheidet sich pkill
darin, dass er standardmäßig genau mit dem Argumentnamen übereinstimmt (bis zu den ersten 15 Zeichen), wenn festgelegt wird, an welche Prozesse Signale gesendet werden. Die -e
, --exact
Option kann auch angegeben werden , um für Namen exakte Übereinstimmungen benötigen länger als 15 Zeichen. Dies macht die Verwendung killall
etwas sicherer als pkill
. Wenn das angegebene Argument Schrägstriche ( /
) enthält , wird das Argument als Dateiname interpretiert und Prozesse, die diese bestimmte Datei ausführen, werden als Signalempfänger ausgewählt. killall
unterstützt auch reguläre Ausdrücke von Prozessnamen, über die -r
, --regexp
Option.
Es gibt auch andere Unterschiede. Der killall
Befehl verfügt beispielsweise über Optionen zum Abgleichen von Prozessen nach Alter ( -o
, --older-than
und -y
, --younger-than
), während festgelegt werden pkill
kann, dass nur Prozesse auf einem bestimmten Terminal abgebrochen werden sollen (über die -t
Option). Es ist klar, dass die beiden Befehle bestimmte Nischen haben.
Beachten Sie, dass der killall
Befehl auf Systemen, die von Unix System V abstammen (insbesondere Solaris von Sun , AIX von IBM und HP-UX von HP ), alle Prozesse beendet, die von einem bestimmten Benutzer beendet werden können, und das System effektiv herunterfährt, wenn es von root ausgeführt wird.
Die Linux-Dienstprogramme psmisc wurden auf BSD (und in der Erweiterung Mac OS X ) portiert , daher killall
folgt die Semantik "Kill-Prozesse nach Namen".