Bashスクリプトは、特定のパラメータを持つプロセスをどのように見つけて終了しますか?

Bashスクリプトは、特定のパラメータを持つプロセスをどのように見つけて終了しますか?

ssh-Dパラメータ(ローカルプロキシ設定)を使用して実行されているインスタンスを終了するスクリプトが必要です。

ps -A | grep -i ssh-Dのあるインスタンスとすべてのインスタンスを手動で検索しますkill -9 {id}

しかし、bashスクリプト形式はどのようなものですか?

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

答え1

実行してpgrep -f "ssh.*-D"正しいプロセスIDが返されることを確認してください。その場合は、同じオプションとモードpgrepに変更して維持してください。pkill

kill -9また、プログラムがSIGKILLをキャプチャして終了する前にそれ自体をクリーンアップすることはできません。私はkill -9最初の試みの後にのみそれを使用します-1 -2-3

答え2

返品、

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

答え3

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が表示されます。

関連情報