进程管理利器-supervisor的安装配置使用

今天介绍一个进程管理工具supervisor,Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

安装

supervisor的安装很简单

1
easy_install supervisor

配置

  • 1.生成初始配置文件
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
  • 2.配置应用启动文件

这里以创建某个程序启动服务为样例
举例

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] #定义program,启动时使用,比如"supervisorctl start 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] #配置结束标志
  • 3.启动supervisor服务
1
/usr/local/bin/supervisord -c /etc/supervisord.conf    #启动服务
  • 4.suptest服务的启动关闭重启操作
1
2
3
4
5
supervisorctl start suptest
supervisorctl stop suptest
supervisorctl restart suptest
supervisorctl status
supervisorctl start all #所有进程的操作
  • 5.supervisor的web管理界面配置
1
2
3
4
5
6
vim /etc/supervisord.conf
#配置文件最后一行进行修改
[inet_http_server]
port=0.0.0.0:8080
username=supervisor
password=supervisor

重启服务,可通过web访问控制