使用Supervisor管理linux程序
supervisor 是一个 Linux 上用来管理程序后台任务的工具,支持程序的自启动,挂掉重启,日志等功能。可配置程序随系统启动,并支持挂掉重启,增强程序稳定性。
安装 Supervisor
1# 使用pip安装supervisor
2pip install supervisor
3
4# ubuntu系统使用apt安装
5apt-get install supervisor
6
7# 执行这个命令输出默认的supervisord配置文件
8echo_supervisord_conf
9
10# 保存到/etc/supervisord.conf
11echo_supervisord_conf > /etc/supervisord.conf
12
13# 编辑配置文件
14vi /etc/supervisord.conf
追加如下内容
1[program:theprogramname] # 任务名称
2command=/bin/cat # 命令
3user=root
4autostart=true # 自动启动
5autorestart=true # 挂掉重启
6stderr_logfile=/var/log/err.log
7stdout_logfile=/home/log/out.log
配置完成,就可以启动 supervisord 了,必须带-c 参数,这里我放到 home 目录下了。
1supervisord -c /home/supervisord/supervisord.conf
如果想要 supervisord 开机自启动,把该命令添加到启动文件
1# 编辑启动文件
2vi /etc/rc.local
3# 在新行添加要执行的命令
4supervisord -c /home/supervisord/supervisord.conf
常用命令
1# 进入supervisorctl运行时,必须在supervisord启动之后才行,也必须配置-c参数
2supervisorctl -c /home/supervisord/supervisord.conf
3
4# 查看所有action
5help
6
7# 控制所有进程
8start all
9stop all
10restart all
11
12# 控制目标进程
13stop shadowsocks
14start shadowsocks
15restart shadowsocks
如果你的配置文件移动到了其他目录,那么无论是使用 supervisord 还是 supervisorctl 命令,都一定要配置-c
参数来指定 config 文件路径,否则会报错
常见问题
- supervisorctl -c xxxx 启动时报错
unix:///tmp/supervisor.sock no such file
,那是因为没有启动 supervisord 服务,先执行supervisord -c xxxx
即可,supervisorctl 的作用是控制 supervisord,而文件supervisor.sock
是通过 supervisord 生成的。