1

特定のディレクトリ(またはそのディレクトリのサブディレクトリ)から実行されているすべてのプロセスを強制終了する簡単な端末コマンドを探しています。

たとえば、と実行可能ファイルを実行しているbin1とします。bin2彼らは次のパスに住んでいます。

/path/to/processes/subdir1/bin1

/path/to/processes/subdir2/subsubdir2/bin2

コマンドが場所のために両方を/path/to/processes見つけて殺すように指定するだけで、bin1とbin2の両方を殺したいです。bin1bin2

4

3 に答える 3

0

1 つの方法は、次のように言うことです。

ps --no-headers axk comm o pid,args | awk '$2 ~ "/path/to/processes/"{print $1}' | xargs kill -9
于 2013-10-17T17:36:17.497 に答える
0

私が知っている古い質問ですが、答えを探してこれに出くわし、最終的に見つけました。これがこれを行うための「最良の」方法であるかどうかはわかりませんが、どこかから始める必要があり、これが非常に信頼できることがわかりました。

ps -eo pid | while read line; do pwdx $line 2> /dev/null; done | grep "your/path/here" | cut -d':' -f1 | while read line; do kill $line; done;
  • ps -eo pid: すべてのプロセス ID を一覧表示します
  • while read line; do pwdx $line 2> /dev/null; done: 実行元のディレクトリを含む、各プロセスに関する詳細情報を取得します
  • 2> /dev/null: アクセス許可を持っていないプロセスに関するエラー行を削除します (オプション)
  • cut -d':' -f1pidのみを抽出します
  • while read line; do kill $line; done;: 各プロセスを pid で強制終了します
于 2019-12-11T18:06:45.843 に答える