2012-07-09 13:15:55 +0000 2012-07-09 13:15:55 +0000
19
19

linux上で連続して実行されるPythonスクリプトを手動で停止させる方法

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

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

私は現在PuTTy経由でLinuxにログインしており、そこで全てのコーディングを行っています。そこで、linuxでpythonスクリプトを停止させるコマンドはありますか?

回答 (6)

35
35
35
2012-07-09 13:19:39 +0000

これを行うための1つのコマンドは

$> ps -ef

となり、結果をPythonプロセスに限定するためには、結果を

$> ps -ef | grep python

とgrepすることができます。

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

2番目のカラムはpidです。

7
7
7
2016-05-25 10:23:16 +0000

この単純な行を実行すると、script.pyをすべて終了させます。

pkill -9 -f script.py
7
7
7
2012-07-09 13:17:43 +0000

スクリプトのプロセスID(PID)を見つけて、kill -9 PIDを実行してプロセスを終了させてください。

このコマンドでPIDを検索してください。

ps -elf | grep python

全てのPythonプロセスをリストアップしてくれます。

kill -9 <whatever_the_PID_is>

はプロセスを終了させます。この段階でプロセスが終了したことを示すメッセージが表示されるかもしれません。

0x1&

はプロセスを終了させます。top (kill) と入力するだけで、k プログラムは kill するプロセスの PID を要求してきます。topでは興味のあるプロセスをすべて表示するのが難しい場合もありますが、topの方が簡単で良いと思います。

4
4
4
2012-07-09 13:17:29 +0000

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

1
1
1
2014-07-15 17:16:12 +0000

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

0
0
0
2015-03-25 11:03:19 +0000

スクリプトの名前を知っていれば、すべての作業を一つのコマンドに減らすことができます。

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

お分かりいただけたと思います ;)

0x1&

注意: 例にあるようにスクリプト名は"“を引用する必要があります。

関連する質問

6
10
5
37
7