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


19

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

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

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

回答:


35

プロセス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)

それはまさに私が探していたものです。ありがとう

7

スクリプトのプロセス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


4
まあ、使用する前に-9、私は最初に「ソフトに」それを殺します。反応しない場合にのみ、を使用します-9
glglgl

「ソフトキリング」の用語に精通していない..
レヴォン

7

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

pkill -9 -f script.py

1
これは、スクリプト名が一意である場合、PIDを手動で検索するよりもはるかに優れています。
FlippingBinary

4

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


素晴らしいソリューション、テストにこれが必要でした。
クソン

1

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


0

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

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

私はあなたがアイデアを得ると思う;)

注意:例にあるとおり、スクリプト名を引用符で囲む必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.