web-dev-qa-db-ja.com

特定の引数を持つプロセスを見つけて強制終了するBashスクリプト?

-D引数(ローカルプロキシの設定)で実行されるsshのインスタンスを強制終了するスクリプトが必要です。

手動で、ps -A | grep -i ssh、-Dでインスタンスを検索し、kill -9 {id} それぞれ。

しかし、それはbashスクリプト形式ではどのように見えるのでしょうか。

(私はMac OS Xを使用していますが、portを介して必要なコマンドをインストールします)

18
Ricket

pgrep -f "ssh.*-D"を実行して、正しいプロセスIDが返されるかどうかを確認します。存在する場合は、pgreppkillに変更し、同じオプションとパターンを維持します。

また、プログラムはSIGKILLをトラップして終了前にクリーンアップすることができないため、絶対に必要な場合以外はkill -9別名SIGKILLを使用しないでください。私は最初にkill -9-1-2を試してから-3を使用します。

27
SiegeX

また、

kill `pgrep -f "ssh.*-D"`
2
Barun

Procファイルシステムを利用して情報を収集できます。例えば:

for proc in $(grep -irl "ssh.*-D" /proc/*/cmdline | grep -v "self"); do if [ -f $proc ]; then cat $proc && echo ""; fi; done

それは完璧ではありません、より排他的な正規表現が必要になります(特にプロセスを強制終了する場合)echo $proc | awk -F'/' '{ print $3 }'は、プロセスのPIDを表示します。

0
Tok