GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen pkill und killall?

Der pgrep und pkill Dienstprogramme wurden in Solaris 7 von Sun eingeführt und nehmen, wie g33klord feststellte, ein Muster als Argument, das mit den Namen laufender Prozesse abgeglichen wird. Während pgrep gibt lediglich eine Liste passender Prozesse aus, pkill sendet das angegebene Signal (oder SIGTERM standardmäßig) zu den Prozessen. Die gemeinsamen Optionen und Semantik zwischen pgrep und pkill ist praktisch, wenn Sie vorsichtig sein und zuerst die Listenabgleichsprozesse mit pgrep überprüfen möchten , dann fahren Sie fort, sie mit pkill zu töten . pgrep und pkill werden vom Paket procps bereitgestellt, das auch andere /proc bereitstellt Dateisystemprogramme wie ps , top , free , uptime unter anderem.

Die killall Der Befehl wird vom psmisc-Paket bereitgestellt und unterscheidet sich von pkill dadurch, dass es standardmäßig genau mit dem Argumentnamen (bis zu den ersten 15 Zeichen) übereinstimmt, wenn bestimmt wird, an welche Prozesse Signale gesendet werden. Die -e , --exact kann angegeben werden, um auch exakte Übereinstimmungen für Namen mit mehr als 15 Zeichen zu verlangen. Das ergibt killall etwas sicherer in der Anwendung im Vergleich zu pkill . Wenn das angegebene Argument einen Schrägstrich (/ ) Zeichen, wird das Argument als Dateiname interpretiert und Prozesse, die diese bestimmte Datei ausführen, werden als Signalempfänger ausgewählt. killall unterstützt auch den regulären Ausdrucksabgleich von Prozessnamen über -r , --regexp Option.

Es gibt auch andere Unterschiede. Der killall Der Befehl hat beispielsweise Optionen zum Abgleichen von Prozessen nach Alter (-o , --older-than und -y , --younger-than ), während pkill kann angewiesen werden, nur Prozesse auf einem bestimmten Terminal zu beenden (über den -t Möglichkeit). Es ist also klar, dass die beiden Befehle spezifische 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), tötet alle Prozesse, die von einem bestimmten Benutzer beendet werden können und das System effektiv herunterfahren, wenn sie von root ausgeführt werden.

Die Linux-Dienstprogramme psmisc wurden auf BSD (und in der Erweiterung Mac OS X) portiert, daher killall Es folgt die Semantik "Prozesse nach Namen beenden".


pkill ist derjenige, der es wert ist, zukünftigen Generationen beigebracht zu werden, sowohl wegen der Filter, die Sie erwähnen, als auch wegen der Tatsache, dass er mit dem hochgradig wiederverwendbaren pgrep gepaart ist . Sie beenden Prozesse auf die gleiche Weise, und keiner beendet rekursiv – allerdings mit pgrep , können Sie nach Sitzung (per-tty, denken Sie an setsid) oder Prozessgruppe (denken Sie an Jobsteuerung) auswählen.


Ein Unterschied besteht darin, dass killall Nehmen Sie den genauen Namen des Prozesses als Argument, während pkill kann einen teilweisen oder vollständigen Namen annehmen.

Sie können diese Frage weiterleiten, um mehr über pkill zu erfahren


Linux
  1. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  2. Was ist der Unterschied zwischen fsck und e2fsck?

  3. Was ist der Unterschied zwischen ls und l?

  4. Was ist der Unterschied zwischen $(CC) und $CC?

  5. Was ist der Unterschied zwischen Route und IP-Route?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen Kill- und Killall-Befehlen?