um die PID des zu tötenden Prozesses zu finden:
pgrep <process command>
Ich benutze dann den Befehl kill, um die von zurückgegebene PID zu töten pgrep <process command>
kill <PID>
Können diese Befehle zu einem kombiniert werden, um die PID oder die PIDs zu löschen, die von zurückgegeben werden pgrep <process command>
? Oder gibt es eine Methode, die mehrere Prozesse nach dem Befehlsnamen beendet?
So etwas wie : kill(pgrep <name of process>)
kill
ps
process-management
blauer Himmel
quelle
quelle
pkill
? Alternativ können Sie verwenden möchtenxargs
.pgrep
Manpagepkill
überall erwähnt (da die beiden Befehle aus demselben Paket stammen).Antworten:
Sie können pkill verwenden:
Möglicherweise möchten Sie auch die Prozessersetzung verwenden (obwohl dies nicht so klar ist):
Und vielleicht möchten Sie Folgendes verwenden
xargs
:quelle
pgrep
und ungültig werdenkill
. Verwenden Sie einfachpkill
.pkill
, wenn die Prozessliste abgerufen und das Signal tatsächlich gesendet wird. In diesem Fall ist es nur schwerer zu erkennen.kill $(ps|head -1)
, um die Rennbedingungen zu umgehen ... aber es gibt wirklich keinen Weg, dies zu vermeiden. Der Prozess kann an jedem Punkt der Pipeline zum Erliegen kommen.Sie können
killall
auch zan
SIGTERM
allefirefox
Prozesse senden .quelle
killall
dies auf verschiedenen Unix-Systemen unterschiedliche Bedeutungen hat. Wenn Sie sich auf einem Nicht-Linux-System befinden, lesen Sie unbedingt die Dokumentation.killall -KILL firefox
kann sich sooo lohnend anfühlen .killall
ist, warum ich es nie benutze. Das Laufenkillall
auf einer Solaris-Box ist zum Beispiel katastrophal.Ja, Sie können eine Bash-Funktion verwenden und eine Schleife über die Ausgabe erstellen.
quelle
kill <no>:failed: operation not permitted
Sie können mehrere Prozesse mit Array beenden. In diesem Fall können Sie Optionen wie
$ip
,$hostname
oder etwas ähnliches.quelle