web-dev-qa-db-ja.com

Linuxで継続的に実行されるPythonスクリプトを手動で停止する方法

Pythonスクリプトが実行され、継続的にエラーをログファイルにダンプします。

スクリプトを編集してもう一度実行したいのですが、スクリプトを停止する方法がわかりません。

現在PuTTYを介してLinuxにログオンしており、そこですべてのコーディングを行っています。では、Linuxでpythonスクリプトを停止するコマンドはありますか?

19
Gunnar

プロセスID(pid)を見つける必要があります。これを行う1つのコマンドは

$> ps -ef

結果をpythonプロセスに制限するには、結果をgrepできます

$> ps -ef | grep python

次のような結果が得られます。

user      2430     1  0 Jul03 ?        00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd

2列目はpidです。次に、killコマンドを次のように使用します。

$> kill -9 2430 (i.e. the pid returned)
36
olly_uk

この単純な行を試してください、それはすべてのscript.pyを終了します:

pkill -9 -f script.py
8
trex

スクリプトのプロセスID(PID)を見つけ、kill -9 PIDを発行してプロセスを強制終了します。ただし、ターミナルでフォアグラウンドプロセスとして実行されている場合は、Contrl-Cで強制終了できます。

次のコマンドでPIDを見つけます。

ps -elf | grep python

すべてのpython=プロセスを一覧表示し、適切なプロセスを選択して、そのPIDを書き留めます。次に、

kill -9 <whatever_the_PID_is>

プロセスを強制終了します。この段階でプロセスが終了したことを示すメッセージが表示される場合があります。

または、topコマンドを使用してpythonプロセスを見つけることができます。単にk(killの場合)と入力すると、topプログラムが強制終了するプロセスのPIDを入力するように求めます。関心のあるすべてのプロセスがtopで画面からスクロールされて表示されない場合があるため、psの方が簡単/と思います。より良い。

7
Levon

プログラムがシェルの現在のプロセスである場合、Ctrl-Cを入力するとPythonプログラムが停止します。

4
Ned Batchelder

完璧な世界では、スクリプトのドキュメントを読み、どの信号を使用してスクリプトを終了させるかを確認します。実際には、おそらくTERMシグナルを最初に送信する必要があります。おそらく、TERMを無視する場合はKILLシグナルを使用します。つまり、psコマンドを使用して(既に説明したように)、プロセスIDを見つけます。次に、kill -TERM <pid>。一部のプログラムは、そのような信号を受け取ったときに、開いている可能性のあるファイルなどをクリーンアップします。そのため、そのようなものから始めるのが良いでしょう。それが失敗した場合、大きなハンマーを除いて、やることはほとんど残っていません:kill -KILL <pid>。 (数値を使用できます(例:-KILL = -9、それらはおそらく決して変更されませんが、理論的には名前を使用する方が安全です))

1
jrl

スクリプトの名前がわかっている場合は、すべての作業を1つのコマンドに減らすことができます。

ps -ef | grep "script_name" | awk '{print $2}' | xargs Sudo kill

pythonスクリプトであることを確認したい場合:

ps -ef | grep "python script_name" | awk '{print $2}' | xargs Sudo kill

すべてのpythonスクリプトを殺したい場合:

ps -ef | grep "python" | awk '{print $2}' | xargs Sudo kill

私はあなたがアイデアを得たと思います;)

注意:例にあるように、スクリプト名を ""で囲む必要があります。

0
Jesus