文字列に一致するすべてのプロセスを終了するコマンドを作成しようとしています。実行権限がありますが、kill -9
実行しようとするpkill -f string
とoperation not permitted
。
これが私が今まで持っているものです:
ps aux | grep -E 'python2|python3'
これはすべてのPythonプロセスのすべてのPIDを取得します。しかし、私のsedとgrepの魔法は、実行するpidを解析するのに十分ではありませんでした。
kill -9 | <sed magic> | grep -E 'python2|python3'
上記の魔法が起こるのを助けることができる人はいますか?
答え1
pgrep "$expression" | xargs kill -9
pgrep
これは、指定されたプロセス名と一致するPIDを検索し、そのPIDを実行から除外するために使用されますkill
。
つまり、kill -9
絶対に日常的に行ってはいけません。プロセスはTERM
(15)信号を処理し、正しくクリーンアップするように設計する必要があります。
また、自分が所有しているプロセスにのみシグナルを送信できるため(スーパーユーザーでない場合)、自分が所有していないプロセスを一致させ、そのプロセスにシグナルを送信しようとすると、適切な警告が表示されます。