Ich muss nach einem bestimmten Prozess suchen und diesen Prozess beenden. Ich habe einen Befehl wie diesen geschrieben:
ps -e | grep dmn | awk '{print $1}' | kill
Wo der Prozessname ist dmn
. Aber es funktioniert nicht. Wie finde ich Prozesse nach Namen und nach kill
ihnen?
linux
bash
shell
command-line
command-line-arguments
user567879
quelle
quelle
$()
Syntax :kill $(ps -e | grep dmn | awk '{print $1}')
.kill $(ps -efw | grep dmn | grep -v grep | awk '{print $2}')
mir nicht sicher, warum und kümmere mich nicht genug darum.kill
versucht, sogar den 'grep'-Prozess zu\n
nach jedem Awk erforderlich , wie inawk '{print $1"\n"}'
?Wenn Sie mehrere Prozesse entfernen möchten, können Sie Folgendes verwenden:
Hinweis: Sie müssen den grep-Prozess selbst aus der Ausgabe entfernen. Deshalb
grep -v grep
wird er verwendet.quelle
Du könntest benutzen
wenn Ihr System den Befehl pkill hat .
quelle
Ich füge nur andere hinzu, aber ich mag es, die Kapazität der Regex-Funktionen von awk zu nutzen:
quelle
Wenn Sie den
pidof
Befehl auf Ihrem System haben (ich weiß, dass Shells wie ZSH standardmäßig mit diesem Befehl geliefert werden, sofern ich mich nicht irre), können Sie so etwas tun.quelle
Sie können auch killall verwenden :
quelle
Sie brauchen das vielleicht nicht
pipe
, wenn Siepidof
Befehl haben und den Bildnamen kennen, habe ich es so gemacht:$()
Ich verstehe dies, da es diese Ausgabe in eine Variable konvertiert, die kill verwenden kann, im Wesentlichen wie es Pipe tun würde. Kürzer und verständlicher als einige andere Optionen, aber möglicherweise auch weniger flexibel und direkter.quelle
hallo freunde .. wir können es mit for loop machen.
"Einige Suche" ist hier jeder Prozessname, den Sie suchen möchten, zum Beispiel "Java". Nehmen wir also an, die Anzahl der Java-Prozesse beträgt 200+, sodass das Beenden einer nach der anderen zu typisch ist.
Sie können also den obigen Befehl verwenden.
Vielen Dank.
quelle
Mit der
pgrep
Option -f verwenden.kill $(pgrep -f dmn)
quelle
pgrep
, warum nicht einfachpkill -f dmn
?