2011-12-28 4 views
34

特定のプロセスを検索し、そのプロセスを強制終了する必要があります。パイプを介してkillする引数を与える方法

ps -e | grep dmn | awk '{print $1}' | kill 

ここでプロセス名はdmnです。しかし、それは動作していません。どうすれば名前でプロセスを見つけられますか?kill

答えて

89
kill $(ps -e | grep dmn | awk '{print $1}') 
+5

新しい '$()'構文を使用してください: 'kill $(ps -e | grep dmn | awk '(print $ 1)') 'を実行します。 – Stratus3D

+4

fwiw他人のために、私はそれを動作させるためにこの答えを修正しなければならなかった: 'kill $(ps -efw | grep dmn | grep -v grep | awk '{print $ 2}')'なぜ、さらにそれを見てください。 – joshweir

+1

@joshweirそうでなければ、 'kill'がパターンを検索しようとしていた 'grep'プロセスをもkillしようとしたためです – meain

13

お使いのシステムがpkill commandを持っている場合は、

pkill dmn 

を使用することができます。場合

+0

1を作成しました。これは、Solarisの[killall](http://bama.ua.edu/cgi-bin/man-cgi?killall)は、[killall5](http:// linux)と同じ意味を持つ複数のプラットフォームで利用できます。 (例えば、kill * ALL *プロセス) – plundra

+0

pkill -9 -f [d] mn – Mitch1077487

27

あなたがこれを使用することができます削除する複数のプロセスがあります。

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

注:あなたはgrep -v grepが使用されている理由です、出力からのgrepプロセス自体を削除する必要があります。あなたはまた、killallを使用することができます

+11

grepにgrepが表示されないようにするには、grep [d] mn – Oldskool

+1

@Oldskool Nice trickのように、最初の文字をかっこ内に入れます。メタキャラクタを使ってgrepの正規表現を自分自身とマッチさせるのは良い考えです。 – jcollado

+0

@Oldskool、+1、あなたは天才です! – jcr

1

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

こんにちは友人..私たちは、forループを使用してそれを行うことができます。

「検索」は、検索するプロセス名です。たとえば「java」とすると、Javaプロセスのカウントは200以上となりますので、1つずつ殺すことはあまり一般的ではありません。

上記のコマンドを使用することができます。

ありがとうございました。 -fオプションで

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

だけで他人に追加することが、私はAWKの正規表現を使用して好きでは能力を備えています。 kill $(pgrep -f dmn)

-1

使用pgrep

+1

'pgrep'をお持ちの方は' pkill -f dmn'だけではないのですか? – muru

1

あなたは(私は誤解だ場合を除き、そのようなZSHとしてシェルは、デフォルトでこれに付属している知っている)あなたのシステムにpidofコマンドを使用している場合は、あなたのような何かを行うことができます。

kill -9 $(pidof dmn) 
-1

は、この目的のために、私はpkillは代わりのkillallをのためのPythonスクリプト

#!/usr/bin/python3 
from os import system as sy 
from sys import argv 
sy("ps ax | ag "+argv[1]+" | awk '{print $1}' | xargs kill 9") 
関連する問題