回答:
あなたは、することができます使用しpgrep
ますが含ま限り-f
のオプションを。これによりpgrep
、プロセス名だけでなく、コマンド全体(引数を含む)のキーワードが一致します。
pgrep -f keyword
manページから:
-f
パターンは通常、プロセス名に対してのみ照合されます。ときに-f
設定されている、完全なコマンドラインが使用されています。
本当にpgrepを避けたい場合は、以下を試してください。
ps -ef | awk '/[k]eyword/{print $2}'
[]
キーワードの最初の文字の前後に注意してください。これは、awk
コマンド自体の照合を回避するための便利なトリックです。
kill -9 `pgrep -f keyword`
ps aux | grep chrome
[k]
トリックを使用する必要がありましたpgrep -f
。私のスクリプトはサブシェルで実行されていたので、その親コマンドを取得していたと思います(確かにわかりません。返されたpidは、コマンドの実行が終了すると消えていました)
pkill -9 -f keyword
か?
試す
ps -ef | grep "KEYWORD" | awk '{print $2}'
このコマンドは、キーワードが含まれているプロセスのPIDを提供します。この例でawk
は、出力の2番目の列にあるものを返します。
| head -1
。
特定のキーワードでプロセスを強制終了するには、~/.bashrc
(linux)または~/.bash_profile
(mac)でエイリアスを作成します。
alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"
| head -1
これがすっきりときれいにまとめられます。