web-dev-qa-db-ja.com

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が自動的に変更されたことがわかります。

だから私はこのプロセスをどのように殺すのか分かりませんか?

どういうわけか名前のプロセスを強制終了する方法はありますか?

更新:-

これは私が得ているものです。 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
6
arsenal

killallを使用します。

killall <the_process_name>
5
precise

あなたの例のpid(変化し続けるもの)は、PIDを見つけようとしているgrepのプロセスIDです。つまり、psとgrepは、探している実際のプロセスを見つけられません。

末尾の「&」を付けずにスクリプトを実行して、スクリプトの実行内容を確認してください。オッズは、あなたに静かに失敗し、実際にはまったく始まっていないことです。

ダッシュからSystem Monitorツールを使用して、プロセスIDを持つプロセスの完全なリストを表示することもできます。

3
ImaginaryRobots

pkillを使用して、killシグナルと同じkillシグナルを送信できます。

Eg: pkill firefox 
pkill -9 firefox
2
Meow

xkillで殺すことができます。 「実行」ダイアログに移動するだけです(Alt+F2)、xkillと入力すると、マウスポインターが「x」に変わります。強制終了してクリックするアプリケーションをポイントすると、強制終了されます。システムモニターを読み込むよりもはるかに高速な場合があります。

2
kamil

基本的な問題は、コマンド 'ps ax | grep何か」。これは常にプロセスの1つとして「grep ...何か」をリストします。これは実際にはあなたが開始した「grep」です。代わりにpgrepを使用してpidを取得します

参照: https://unix.stackexchange.com/questions/74185/how-can-i-prevent-grep-from-showing-up-in-ps-results

1
Vishu