it-swarm.com.de

Wie kann man alle Prozesse mit Vornamen beenden?

Ich führe den Befehl ps -A | grep <application_name> und Liste des Prozesses wie folgt erhalten:

19440 ?        00:00:11 <application_name>
21630 ?        00:00:00 <application_name>
22694 ?        00:00:00 <application_name>

Ich möchte alle Prozesse aus der Liste beenden: 19440, 21630, 22694.

Ich habe versucht ps -A | grep <application_name> | xargs kill -9 $1 aber es funktioniert mit Fehlern.

kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>

Wie kann ich das anmutig machen?

17
pkill -f <application_na>

Beendet alle Prozesse, deren Namen das Muster <application_na> Enthalten.

man pkill

26
Katu

Das Problem ist, dass ps -A | grep <application_name> | xargs -n1 Eine Ausgabe wie diese zurückgibt

19440
?
00:00:11
<application_name>
21630
?
00:00:00
<application_name>
22694
?
00:00:00
<application_name>

Sie können awk verwenden, um zuerst eine Spalte mit ps Ausgabe abzurufen.

ps -A | grep <application_name> | awk '{print $1}' | xargs -n1

Gibt eine Liste der PIDs zurück

19440
21630
22694

Und wenn Sie kill -9 $1 Hinzufügen, haben Sie einen Befehl, der alle PIDs beendet

ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1
11

killall kann das.

$ killall application_name
0
rudimeier