パイプを介して殺すための議論を与える方法


85

特定のプロセスを検索して、そのプロセスを強制終了する必要があります。私はこのようなコマンドを書きました:

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

プロセス名はdmnです。しかし、それは機能していません。名前とプロセスでプロセスを見つけるにはどうすればよいですかkill

回答:


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

8
新しい$()構文を使用します:kill $(ps -e | grep dmn | awk '{print $1}')
Stratus3D 2015

7
他の人のために、私はそれを機能させるためにこの答えを修正しなければなりkill $(ps -efw | grep dmn | grep -v grep | awk '{print $2}')ませんでした:理由がわからず、十分に気にしないでください。
joshweir 2016年

1
@joshweirこれはkill、パターンを検索しようとしていた「grep」プロセスでさえも
強制終了

\nように、各awkの後に必要ではないでしょうawk '{print $1"\n"}'か?
Sopalajo de Arrierez 2016年

43

削除したいプロセスが複数ある場合は、これを使用できます。

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

注:出力からgrepプロセス自体を削除する必要があるため、grep -v grepが使用されます。


17
grep [d] mn
Oldskool 2011

1
@Oldskoolいいトリック。メタ文字を使用してgrep正規表現をそれ自体と一致させないようにすることは、良い考えです。
jcollado 2011

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

素晴らしいトリックですが、シェルスクリプトに変換するのはより複雑になります
Metagrapher 2016年

17

あなたが使うことができます

pkill dmn 

システムにpkillコマンドがある場合。


1
killallの代わりにpkillの+1。(これは「意味」とは、異なることなく、複数のプラットフォームで利用可能ですkillallをSolaris上では同等ですkillall5 -殺す、すなわち例えばLinux上ALLプロセス)
plundra

4

他のものを追加するだけですが、私はawkの正規表現機能の容量を使用するのが好きです:

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

4

pidofシステムにコマンドがある場合(私が間違っていない限り、ZSHなどのシェルがデフォルトでこれに付属していることを知っています)、次のようなことができます。

kill -9 $(pidof dmn)


2

コマンドがあり、画像名を知っpipeている場合は、これは必要ないかもしれませんpidof。私は次のようにしました。

kill $(pidof synergyc)

$()基本的にパイプが行うように、その出力をkillが使用できる変数に変換するので、これを理解しています。他のいくつかのオプションよりも短くて理解しやすいですが、柔軟性が低く、より直接的である可能性もあります。


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

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

「一部の検索」は、ここでは検索したいプロセス名です。たとえば、「java」のように、Javaプロセスの数が200以上であるとすると、1つずつ強制終了するのは一般的すぎます。

したがって、上記のコマンドを使用できます。

ありがとう。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.