Der kill
Befehl ist ein sehr einfacher Wrapper für kill
Systemaufruf , die nur Prozess-IDs (PIDs) kennt. pkill
und killall
sind auch Wrapper für kill
Systemaufruf , (eigentlich an die libc-Bibliothek, die den Systemaufruf direkt aufruft), kann aber die PIDs für Sie ermitteln, basierend auf Dingen wie Prozessname, Eigentümer des Prozesses, Sitzungs-ID usw.
Wie pkill
und killall
Arbeiten können 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 ab /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 den readproc
Systemaufruf, während killall
nicht. Ich kann nicht sagen, ob es einen Leistungsunterschied gibt:Sie müssen das selbst messen.
kill und killall sind Werkzeuge, die eine Möglichkeit bieten, einen Prozess zu beenden. Das erste anhand seiner PID, das zweite anhand seines Namens. pgrep (list) und pkill (standardmäßig kill) sind Werkzeuge, die eine Möglichkeit bieten, Nachrichten an einen Prozess anhand seines Namens oder anderer Attribute zu senden, siehe:http://linux.die. net/man/1/pkillWeitere Informationen zu Signalen:http://linux.die.net/man/7/signal