Python スクリプトをバックグラウンドで実行し、クラッシュ時に再起動する

Python スクリプトをバックグラウンドで実行し、クラッシュ時に再起動する

Ubuntu 12.04 サーバーで常に実行したい非常にシンプルな Python スクリプトがあります。upstart + monit を使用することを考えました。問題は、これらのツールが私のような単純な人間にとってはかなり複雑に思え、Web 上で簡単な例を見つけることができないことです。

upstart + monit はやりすぎでしょうか? / 誰かもっと簡単な代替手段を知っていますか? / または良いチュートリアルはありますか?

答え1

出典この答え:

monitor.shPython スクリプトを起動し、クラッシュした場合は再起動するが、スクリプトが正常に終了した場合は再起動しないbash スクリプトを作成できます。

#!/bin/bash
until myscript.py; do
    echo "'myscript.py' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

次に、バックグラウンドでモニター スクリプトを開始します。

nohup monitor.sh &

の代わりとしてnohup、以下も検討してください。tmuxまたは画面バックグラウンドプロセスを実行するため。

答え2

上記の回答は素晴らしいです。現時点ではコメントできないので、ここで回答を改善する必要があるかもしれません。

「myscript」は Python スクリプトであり、bash 環境で実行されていないため、関数を記述することもできます。

それで、

#!/bin/bash

myscript(){
    python3 myscript [args..]
}

until myscript; do
    echo "'myscript' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

Python や Bash を初めて使う人は、この小さなことを知らないでしょう。役に立つかもしれません。私は最初はこのような小さなことで苦労していました。他の人には苦労してほしくありません。

関連情報