2010-12-13 9 views
3

Wenn ich den Befehl ps -ef | grep sharats eingeben, erhalte ich eine Liste von Prozessen.killing Reihe von Prozessen

sharatds 13164 13163 0 20:53 pts/2 00:00:00 [bt.C.256] <defunct> 
sharatds 13165 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13199 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13233 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13267 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13301 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13335 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13369 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13403 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13437 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13471 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13505 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13539 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13573 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13607 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13641 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13675 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13709 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13743 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13777 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13811 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13845 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13879 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 
sharatds 13913 13163 0 20:53 pts/2 00:00:00 [rsh] <defunct> 

Ich möchte alle Prozesse beenden, die die letzte Spalte als nicht funktionstüchtig haben.

Kann mir jemand mit einem Skript helfen?

+3

Es ist besser, grepping 'ps' zu vermeiden, wenn Sie können. Verwenden Sie 'pgrep -u' oder' pkill -u', wenn sie verfügbar sind, oder 'ps -u', wenn sie nicht verfügbar sind. Die Verwendung von 'grep' birgt das Risiko von Fehlalarmen. Brandon hat Recht. Sie sind schon tot. –

Antwort

7

Dies tun:

ps -ef | grep sharatds | awk '{print $2}' | xargs kill 
4

ich so etwas wie dies in der Regel tun:

kill $(ps -ef |grep sharatds|awk '{print $2}') 

Edit: Warten Sie! Das sind verstorbene Prozesse. Sie sind bereits tot und können nicht weiter getötet werden! Der übergeordnete Prozess muss wait() ausführen, um deren Status zu lesen, damit sie bereinigt und aus der Prozesstabelle entfernt werden können.

+1

Ich mag diese Methode wirklich, es ist schön zu wissen, dass Sie auch 'sudo kill -9 $ (ps -ef | grep sharaths | awk '{print $ 2}')' machen können, wenn Sie es in Fällen "super töten" wollen wo regelmäßige Tötung nicht funktioniert. (nicht für schwache Nerven) LOL –

+0

Oder töten Sie den übergeordneten Prozess. Wenn der Elternteil stirbt, werden die Kinder von init (Prozess 1) geerbt, wodurch die Zombie-Kinder automatisch ernährt werden. – anthony