[解決済み] Python スクリプトが実行されているかどうかを確認する
2022-09-04 02:17:04
質問
Web アプリの一部として python daemon を実行しています/ daemon が実行されているかどうかを (python を使って) すぐに確認し、もし実行されていなければ起動するにはどうすればよいですか?
私は、デーモンのクラッシュを修正するためにそのようにしたいので、スクリプトを手動で実行する必要はなく、呼び出されるとすぐに自動的に実行され、その後実行し続けるでしょう。
私のスクリプトが実行されているかどうかを(pythonを使用して)確認するにはどうすればよいですか?
どのように解決するのですか?
pidファイルをどこか(例: /tmp)に置いてください。そして、そのファイル内の PID が存在するかどうかを確認することで、プロセスが実行されているかどうかをチェックすることができます。きれいにシャットダウンしたらそのファイルを削除し、起動時に確認することを忘れないでください。
#/usr/bin/env python
import os
import sys
pid = str(os.getpid())
pidfile = "/tmp/mydaemon.pid"
if os.path.isfile(pidfile):
print "%s already exists, exiting" % pidfile
sys.exit()
file(pidfile, 'w').write(pid)
try:
# Do some actual work here
finally:
os.unlink(pidfile)
次に、/tmp/mydaemon.pid の内容が既存のプロセスであるかどうかを確認することで、プロセスが実行されているかどうかをチェックすることができます。Monit (前述) がこれをやってくれますし、ps からの戻りコードを使用してそれをチェックする簡単なシェルスクリプトを書くこともできます。
ps up `cat /tmp/mydaemon.pid ` >/dev/null && echo "Running" || echo "Not running"
追加クレジットとして、atexit モジュールを使って、 どんな状況でも (強制終了、例外発生など) プログラムがその pid ファイルをクリーンアップすることを 保証することができます。
関連
-
[解決済み】Pythonのvirtualenvを離脱/終了/無効化する方法
-
[解決済み] UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] スクリプトを実行しているPythonのバージョンを確認するにはどうしたらいいですか?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】node.jsアプリをバックグラウンドサービスとして実行するにはどうすればいいですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Pythonでtempディレクトリを取得するクロスプラットフォームの方法
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複