PID の代わりにプログラム名を使用してプロセスを強制終了するにはどうすればいいですか?

PID の代わりにプログラム名を使用してプロセスを強制終了するにはどうすればいいですか?

nohup私は以下のようにしてバックグラウンドでPythonプログラムを起動しました-

nohup zook.py &

今、私はこのプロセスを終了しようとしているので、ps下記のコマンドを実行しました

root@phxdbx1145:/home/david/zook# ps ax | grep zook.py
16352 pts/6    S+     0:00 grep --color=auto zook.py

しかし、どういうわけか、PIDが変更されるたびに、その理由がわかりません。私がこのようにするたびに -

kill -9 16352

いつもこう言いますNo Such Process

そして、px コマンドを再度実行すると、PID が自動的に変更されたことがわかります。

それで、このプロセスをどのように終了すればよいかわかりません。

何らかの方法でその名前のプロセスを強制終了する方法はありますか?

私は試してみました

killall zook.py

しかし、私にはうまくいかず、

zook.py: no process found

他に選択肢はありますか?どういうわけか毎回PIDが変更されてしまうので、使用できませんkill -9 pid

アップデート:-

これが私が得たものです。私はそれを実行しpkill -9 zook.py、次に下記のように ps コマンドを実行しましたが、zook.py が常に表示されています。

root@dbx1145:/home/david/zook# pkill -9 zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23870 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23872 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23874 pts/6    S+     0:00 grep --color=auto zook.py

root@dbx1145:/home/david/zook# ps ax | grep zook.py
23876 pts/6    S+     0:00 grep --color=auto zook.py

答え1

その PID の右側を見ると、検索文字列を探している grep の PID であることが分かります。毎回異なるのはそのためです。grep からシェルが戻ってくる頃には、もちろん grep は消えています。

プロセスがまだ実行中の場合は、別の名前で見つかります。代わりに試してください。または、それがある場合はps ax | grep python、さらに良い方法です。pgrep python

答え2

プロセスのgrepを実行するには、次のようにします。

ps ax|grep name|grep -v grep

これにより grep コマンドが削除されますが、スクリプト名が表示されない場合は、より長いコマンド ラインを取得するために ps axw を実行する必要がある可能性があります。

ps axww|grep name|grep -v grep

関連情報