如果程序崩溃,如何让屏幕会话自动重启程序? (在DigitalOcean上运行)

时间:2015-12-08 21:45:50

标签: python service gnu-screen

我在Digital Ocean的屏幕会话中运行Python脚本。如果它崩溃了,我该如何让它再次自动重启?

1 个答案:

答案 0 :(得分:0)

我不确定屏幕是否具有监控生命迹象过程的能力,但我认为supervisor之类的内容会对您有所帮助。屏幕的目的只是为了让你可以保持shell运行,即使你已经与ssh断开连接。

您可以使用pip或easy_install下载并安装(以root用户身份)主管(需要访问互联网)

pip install supervisor

easy_install supervisor

然后在编辑器中创建并打开/etc/supervisord.conf并使用此标准配置填充它,或者通过挖掘various config options来创建自己的。{/ p>

[supervisord]
logfile=/tmp/supervisord.log
logfile_maxbytes=50MB   ; change these depending on how many logs
logfile_backups=10      ; you want to keep
loglevel=info
pidfile=/tmp/supervisord.pid
nodaemon=true
minfds=1024
minprocs=200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket

[program:myscript]
command=python /path/to/myscript.py ; change to your actual script
autostart=true
autorestart=unexpected ; only restarts when your script has been up for > 1 second and exited with a non-zero exit code.
redirect_stderr=true
stdout_logfile=/var/log/myscript.log

然后不是直接启动你的脚本,而是你需要做的就是启动主管。

/usr/local/bin/supervisord -c /etc/supervisord.conf