linux上で連続して実行されるPythonスクリプトを手動で停止させる方法
私はPythonスクリプトを実行していて、ログファイルにエラーを連続的にダンプしています。
スクリプトを編集して再度実行したいのですが、スクリプトを停止する方法がわかりません。
私は現在PuTTy経由でLinuxにログインしており、そこで全てのコーディングを行っています。そこで、linuxでpythonスクリプトを停止させるコマンドはありますか?
スクリプトのプロセス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
の方が簡単で良いと思います。
プログラムがシェルの現在のプロセスである場合、Ctrl-Cを入力するとPythonプログラムが停止します。
完璧な世界では、スクリプトのドキュメントを読んで、 どのシグナルを使って終了を指示すべきかを確認するでしょう。現実の世界では、おそらく最初にTERMシグナルを送り、TERMシグナルを無視した場合にはKILLシグナルを使うことになるでしょう。そこで、あなたがすることは、psコマンドを使ってプロセスIDを見つけることです(すでに誰かが説明しています)。そして、kill -TERM <pid>
を実行します。いくつかのプログラムは、そのようなシグナルを受け取ったときに、開いているかもしれないファイルのようなものをクリーンアップするので、そのようなものから始めたほうがいいでしょう。もしそれが失敗した場合は、大きなハンマー以外にやることはあまり残っていません。kill -KILL <pid>
. (数値を使うこともできます。例えば -KILL = -9 のようにすれば、おそらく変わることはないでしょうが、理論的には名前を使った方が安全かもしれません)
スクリプトの名前を知っていれば、すべての作業を一つのコマンドに減らすことができます。
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&
注意: 例にあるようにスクリプト名は"“を引用する必要があります。