it-swarm.com.de

Wie man Argumente gibt, die man via Pipe töten kann

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 dmn ist. Aber es funktioniert nicht. Wie finde ich Prozesse nach Name und kill.

53
user567879
kill $(ps -e | grep dmn | awk '{print $1}')
113
Daniel Persson

Falls Sie mehrere Prozesse entfernen möchten, können Sie Folgendes verwenden:

ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill

Hinweis: Sie müssen den grep-Prozess selbst aus der Ausgabe entfernen. Aus diesem Grund wird grep -v grep verwendet.

33
jcollado

Du könntest benutzen

pkill dmn 

wenn Ihr System den Befehl pkill hat .

14
unutbu

Sie fügen einfach weitere hinzu, aber ich mag es, die Kapazität der Regex-Funktionen von awk zu nutzen:

kill $(ps | awk '/dmn/{print $1}')
4
pedmiston

Wenn Sie den Befehl pidof auf Ihrem System haben (ich weiß, dass Shells wie ZSH standardmäßig dazu gehören, sofern ich mich nicht irre), könnten Sie so etwas tun. 

kill -9 $(pidof dmn)
3

Sie können auch killall verwenden:

killall dmn
1
SKi
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done

hallo freunde .. wir können es mit for loop machen. 

"Einige Suche" ist hier ein beliebiger Prozessname, nach dem Sie suchen möchten, beispielsweise "Java". Nehmen Sie an, die Anzahl der Java-Prozesse beträgt 200+. Es ist also zu typisch, einen nach dem anderen zu töten.

sie können also den obigen Befehl verwenden.

Vielen Dank.

0
Nishant

Möglicherweise brauchen Sie nicht pipe, wenn Sie über den Befehl pidof verfügen und den Bildnamen kennen, ich habe es so gemacht:

kill $(pidof synergyc)

$() Ich verstehe das, da es diese Ausgabe in eine Variable konvertiert, die Kill verwenden kann, im Wesentlichen wie Pipe. Kürzer und verständlicher als einige andere Optionen, aber auch weniger flexibel und direkter.

0
NotVeryPythonic