今天介绍一个进程管理工具supervisor,Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
安装
supervisor的安装很简单
配置
1 2 3 4 5 6
| echo_supervisord_conf > /etc/supervisord.conf vim /etc/supervisord.conf
[include] ;files = relative/directory/*.ini files = /etc/supervisord.d/*.conf
|
这里以创建某个程序启动服务为样例
举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| mkdir -p /etc/supervisord.d/ cd /etc/supervisord.d/ vim suptest.conf
[program:suptest] user=root command= java -jar test.jar autostart=true autorestart=true startsecs=10 stdout_logfile=/data/logs/suptest.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/data/logs/suptest_err.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB stopsignal=INT [supervisord]
|
1
| /usr/local/bin/supervisord -c /etc/supervisord.conf
|
1 2 3 4 5
| supervisorctl start suptest supervisorctl stop suptest supervisorctl restart suptest supervisorctl status supervisorctl start all
|
1 2 3 4 5 6
| vim /etc/supervisord.conf
[inet_http_server] port=0.0.0.0:8080 username=supervisor password=supervisor
|
重启服务,可通过web访问控制