Mehrere Prozesse eines Programms mit xargs beenden

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Mehrere Prozesse eines Programms mit xargs beenden

Beitrag von Duff » 28.05.2006 13:00:11

Wollte eben mehrere Dateien in xine öffnen, doch leider wurde für jede Datei xine geöffnet, so dass ich eine Menge an xine-Prozessen hatte.

Nun wollte ich die Prozesse alle mit xargs und kill -9 beenden, doch leider funktioniert dies nicht.

Kann mir noch mal kurz jemand sagen, wie ich mit ps -ef, xargs und kill -9 alle xine Prozesse beenden kann?
Oh, yeah!

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 28.05.2006 14:02:57

kill `ps aux | awk '/xine/{ print $2 }'`
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 28.05.2006 14:25:36

Was spricht gegen killall -9 xine?

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.05.2006 16:59:01

Ok, die beiden Vorschläge funktionieren natürlich auch.

Aber man kann das ganze doch auch irgendwie mit xargs machen, oder?
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.05.2006 17:30:12

Duff hat geschrieben:Aber man kann das ganze doch auch irgendwie mit xargs machen, oder?
geht auch mit xargs:

Code: Alles auswählen

ps aux | awk '/xine/ && !/awk/{print $2}' | xargs  kill
Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.05.2006 11:58:16

Ja genau, so war das.

Danke!

Aber das

Code: Alles auswählen

&& !/awk/
braucht man doch eigentlich nicht, oder?
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.05.2006 12:12:27

Duff hat geschrieben:Aber das

Code: Alles auswählen

&& !/awk/
braucht man doch eigentlich nicht, oder?
manchmal "schmugelt" sich der awk Befehl auch selber in die von Ihm erzeugte Ergebnisliste (weil in diesem Befehl ja auch das Suchkriterium "xine" vor). Der awk Prozeß terminiert aber vor dem Aufruf von xargs. Daher kann es ohne diesem Suchkriterium zu einer unschönen Fehlermeldung kommen. Wenn du damit leben kannst, ist das weglassen dieser Abfrage auch nicht weiter schlimm.


Gruß
gms

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 29.05.2006 12:24:13

Wenn man bei kill die option "x" verwendet ist das Nötig.
Übrigens einfacher wäre:

Code: Alles auswählen

ps -C xine -o %p --no-heading | xargs kill

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.05.2006 12:26:38

Ach so.

Kommt es dann "nur" zu einer Fehlermeldung oder aber funktioniert der ganze Befehl dann nicht?
Habe zwar mal Prozesse ohne das Suchkriterium gekillt und es hat auch geklappt. Doch leider bin ich bisher noch nicht auf einen Fehler oder eine Fehlermeldung gestoßen.
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.05.2006 12:29:16

es kommt nur zu einer Fehlermeldung, die anderen Prozesse werden korrekt gekillt
Übrigens wenn du dich nicht auf xargs versteifen würdes, die einfachste Lösung wäre

Code: Alles auswählen

pkill xine
Du benötigst dafür das procps Paket.

Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.05.2006 12:30:52

ps -C xine -o %p --no-heading | xargs kill
..das ist ja auch mal eine ganz interessante Lösung. Dafür musste ich mir allerdings mal die manual-pages zu ps etwas genauer anschauen :-)

Aber danach habe ich es verstanden. Eine sehr feine Lösung!
Oh, yeah!

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 29.05.2006 12:32:03

Da bei "ps" normalerweise nach den Prozessids sortiert wird und die IDs immer aufsteigend sind, kommt der "awk" Prozess zuletzt und killt sich somit selber. Das macht in diesem Fall nichts aus, ist aber nicht immer erwünscht :-)

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.05.2006 12:37:20

Den Befehl

Code: Alles auswählen

pkill 
kannte ich noch gar nicht und ist wohl sicherlich die schnellste Möglichkeit verschiedene Prozesse eines Programm zu killen.

Ich wollte das ganze nur gerne mit xargs machen, da ich auf der Arbeit nicht nur unter linux arbeite, sondern auch unter unix, und da gibt es leider nicht immer alle tools die es auch unter linux gibt.
Oh, yeah!

Antworten