Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程。它可以同时启动,关闭多个进程,使用起来特别的方便。
supervisord(server 部分):读入配置文件并管理子进程,supervisord会自动将应用程序的进程转为守护进程,这样即使你退出shell也没影响。注意,如果一个进程已经是守护进程了,那用supervisord监控时,会报如下错误,因此用supervisor监控的程序,必须以前台进程的方式启动。
FATAL Exited too quickly (PRocess log may have details)supervisorctl(client 部分):命令行客户端,用户可以通过它与不同的 supervisord 进程联系,获取子进程的状态,如
supervisorctl reread ; 重载配置文件,并不重启任何进程supervisorctl reload ; 重新启动supervisord进程supervisorctl stop(start, restart) xxx,停止(启动,重启)某一个进程(xxx);supervisorctl update: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;安装完成后,会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,其中echo_supervisor_conf 是生成supervisor 配置文件的进程。
Supervisor只能管理非daemon的进程,也就是说Supervisor不能管理守护进程。否则提示Exited too quickly (process log may have details)异常。因此我们需要将一些daemon进程运行的程序,进行一下处理。
tomcat 的处理: /opt/tomcat/bin/catalina.sh runNginx 处理:增加 daemon off 至nginx.conf 的全局配置项中在conf文件的最后,添加如下内容
[program:nginx]command=/usr/sbin/nginx -c /etc/nginx/nginx.confnumprocs=1autorestart=trueredirect_stderr=truestdout_logfile=/var/log/supervisor-nginx.logstderr_logfile=/var/log/supervisor-nginx.errloglevel=info以上内容只介绍了管理一个nginx进程的情况,如果是多个进程,建议Include 进来,进行分类配置,具体可以参看 supervisord.conf 文件中
;[include];files = relative/directory/*.ini针对以上进行修改,指定一个放配置文件的目录。
新闻热点
疑难解答