Supervisord不会启动被杀进程

Ahm*_*gle 7 supervisord

我已经supervisord在我的Ubuntu 10.04上安装了它并且它持续运行Java进程并且当它以某种方式死亡或崩溃时应该治愈(重新加载)进程.

在我htop发送SIGKILL,SIGTERM,SIGHUP,SIGSEGV信号到该Java进程和监视/etc/logs/supervisord.log文件时,它说.

08:09:46,182 INFO success: myprogram entered RUNNING state,[...]
08:38:10,043 INFO exited: myprogram (exit status 0; expected) 
Run Code Online (Sandbox Code Playgroud)

08:38我用SIGSEGV杀死进程.为什么不用代码0退出,为什么不supervisord重启它呢?

supervisord.conf关于这个具体计划的所有内容如下:

[program:play-9000]
command=play run /var/www/myprogram/ --%%prod
stderr_logfile = /var/log/supervisord/myprogram-stderr.log
stdout_logfile = /var/log/supervisord/myprogram-stdout.log
Run Code Online (Sandbox Code Playgroud)

当我启动supervisord时,过程工作得非常好,但是没有得到治愈.

那么任何想法如何启动supervisord作为服务,以便它在整个系统重新启动时自动启动?

小智 12

尝试设置autorestart=true.默认情况下,autorestart设置为"unexpected",这意味着只有在存在意外退出代码的情况下才会重新启动进程.默认情况下,退出代码0是预期的.

http://supervisord.org/configuration.html#program-x-section-settings

您可以使用chkconfig程序确保主管在重新启动时启动.

$ sudo apt-get install chkconfig
$ chkconfig -l supervisor
supervisor                0:off  1:off  2:on   3:on   4:on   5:on   6:off
Run Code Online (Sandbox Code Playgroud)

我可以看到在安装它时默认为运行级别2-5启用了它.

$ man 7 runlevel
Run Code Online (Sandbox Code Playgroud)

有关运行级别的更多信息.