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

Der Unterschied zwischen Kill, Pkill und Killall?

Ich kenne kill Befehl , und meistens verwenden wir einfach kill -9 Um einen Prozess zwangsweise zu beenden, gibt es viele andere Signale, die mit kill verwendet werden können . Aber ich frage mich, was die Anwendungsfälle von pkill sind und killall , falls es bereits einen Kill-Befehl gibt.

Führen Sie pkill aus und killall benutze den kill Befehl in ihrer Umsetzung? Ich meine, sie sind nur Wrapper über kill oder sie haben ihre eigene Implementierung?

Ich würde auch gerne wissen, wie pgrep Befehl erhält die Prozess-ID aus dem Prozessnamen.

Verwenden alle diese Befehle dieselben zugrunde liegenden Systemaufrufe? Gibt es aus Sicht der Leistung einen Unterschied, welcher ist schneller?

Akzeptierte Antwort:

Der kill Der Befehl ist ein sehr einfacher Wrapper für kill Systemaufruf , die nur Prozess-IDs (PIDs) kennt. pkill und killall sind auch Wrapper zum kill Systemaufruf , (eigentlich an die libc-Bibliothek, die den Systemaufruf direkt aufruft), kann aber die PIDs für Sie ermitteln, basierend auf Dingen wie dem Prozessnamen, dem Eigentümer des Prozesses, der Sitzungs-ID usw.

Wie pkill und killall Arbeit kann mit ltrace eingesehen werden oder strace auf sie. Unter Linux lesen beide den /proc durch Dateisystem und durchläuft für jede gefundene PID (Verzeichnis) den Pfad, um einen Prozess anhand seines Namens oder anderer Attribute zu identifizieren. Wie das gemacht wird, ist technisch gesehen Kernel- und System-spezifisch. Im Allgemeinen lesen sie aus /proc/<PID>/stat die als 2. Feld den Befehlsnamen enthält. Für pkill -f und pgrep Untersuchen Sie /cmdline Eintrag für den proc-Eintrag jeder PID.

pkill und pgrep Verwenden Sie die readproc Systemaufruf, wohingegen killall nicht. Ich kann nicht sagen, ob es einen Leistungsunterschied gibt:Sie müssen das selbst messen.


Linux
  1. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  2. Der Unterschied zwischen Getty und Agetty?

  3. Der Unterschied zwischen .exrc und .vimrc?

  4. Der Unterschied zwischen „$ . Foo‘ und ‚$ ./foo‘??

  5. Der Unterschied zwischen ~/.profile und ~/.bash_profile?

Was ist der Unterschied zwischen Linux und Unix?

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

4 Möglichkeiten, einen Prozess zu beenden – kill, killall, pkill, xkill

So beenden Sie Prozesse in Linux mit kill, killall und pkill

Was ist der Unterschied zwischen ls und l?

Was ist der Unterschied zwischen pkill und killall?