백그라운드에서 Python 스크립트를 실행하고 충돌 시 다시 시작

백그라운드에서 Python 스크립트를 실행하고 충돌 시 다시 시작

우분투 12.04 서버에서 항상 실행하고 싶은 매우 간단한 Python 스크립트가 있습니다. upstart + monit을 사용하려고 생각했습니다. 문제는 이러한 도구가 나 같은 단순한 사람에게는 다소 복잡해 보이고 웹에서 간단한 예를 찾을 수 없다는 것입니다.

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고려할 수도 있습니다.티먹스또는화면백그라운드 프로세스를 실행하기 위한 것입니다.

답변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를 처음 접하는 사람들은 이 작은 것을 알지 못할 것입니다. 그들에게 도움이 될 수도 있습니다. 처음에는 이런 사소한 일로 고생했어요. 다른 사람은 원하지 않습니다!

관련 정보