ps -ef | grepキーワードからPIDを取得


111

ps -ef | grep "keyword"デーモンプロセスのpidを決定するために使用したいと思います(ps -efの出力に一意の文字列があります)。

私はプロセスを殺すことができpkill keywordますpidを殺す代わりにpidを返すコマンドはありますか?(pidofまたはpgrepは機能しません)

回答:


231

あなたは、することができます使用しpgrepますが含ま限り-fのオプションを。これによりpgrep、プロセス名だけでなく、コマンド全体(引数を含む)のキーワードが一致します。

pgrep -f keyword

manページから:

-f       パターンは通常、プロセス名に対してのみ照合されます。ときに-f設定されている、完全なコマンドラインが使用されています。


本当にpgrepを避けたい場合は、以下を試してください。

ps -ef | awk '/[k]eyword/{print $2}'

[]キーワードの最初の文字の前後に注意してください。これは、awkコマンド自体の照合を回避するための便利なトリックです。


3
psは過度に使用され、pgrepはあまり使用されていません。投稿ありがとうございます。
フェリペアルバレス

6
殺すために出力を渡すための一つの方法は次のとおりです。 kill -9 `pgrep -f keyword`
クリス

この答えはこれまでで最高です。だから、私は無駄にした多くの時間ps aux | grep chrome
ブランドン

[k]トリックを使用する必要がありましたpgrep -f。私のスクリプトはサブシェルで実行されていたので、その親コマンドを取得していたと思います(確かにわかりません。返されたpidは、コマンドの実行が終了すると消えていました)
ArtOfWarfare

2
このユースケースの@Krisは、単に使用する方が簡単ではありませんpkill -9 -f keywordか?
oidualc

53

試す

ps -ef | grep "KEYWORD" | awk '{print $2}'

このコマンドは、キーワードが含まれているプロセスのPIDを提供します。この例でawkは、出力の2番目の列にあるものを返します。


2
これは複数のpidを返す可能性があるため、を追加することで最初のpidを取得できます| head -1
クリス

'head -1'は一部のLinuxではgrep PIDを返します。tail-1である必要があります。
Joao Vitorino、2018

22

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'


4
おそらくタイプミスですか?ps -ef | grep KEYWORD | grep -v grep | awk '{print $ 2}'
rmv

返されたPIDを「kill -9」に渡す方法を知っていますか?!
alybadawy

3
@alybadawyだけ追加| xargs kill -9最後に
patte



3

特定のキーワードでプロセスを強制終了するには、~/.bashrc(linux)または~/.bash_profile(mac)でエイリアスを作成します。

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"

パーフェクト!パイプの最後にパイプを追加すると、| head -1これがすっきりときれいにまとめられます。
ラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.