【笔记】Supervisord学习笔记

前言

通过Supervisord将进程升级为守护进程(daemon)

下载依赖

CentOS

1
2
yum install epel-release
yum install supervisor

修改配置

  • 在配置文件末尾追加配置
/etc/supervisord.conf
1
2
3
4
5
6
7
8
9
[program:守护进程名]
user=root ;执行程序的用户
command= ;执行命令
directory=/root ;命令执行的目录
stopsignal=TERM ;重启时发送的信号
autostart=true ;是否自动启动
autorestart=true ;是否自动重启
stdout_logfile=/root/log.log ;标准输出日志位置
stderr_logfile=/root/err.log ;标准错误日志位

Supervisord命令

启动Supervisord服务

-c <conf>:启动Supervisord服务时指定配置文件

1
supervisord

启动Supervisord维护的守护进程

1
supervisorctl start <daemon>

停止Supervisord维护的守护进程

1
supervisorctl stop <daemon>

重启Supervisord维护的守护进程

1
supervisorctl restart <daemon>

重载Supervisord配置并重启维护的守护进程

1
supervisorctl reload <daemon>

查看Supervisord所有守护进程状态

1
supervisorctl status

踩坑

  • 执行supervisorctl命令时报错:unix:///var/run/supervisor/supervisor.sock no such file

原因

  • Supervisord服务没有启动

解决问题

  • 手动创建supervisor.sock文件并启动Supervisord服务
1
2
touch /var/run/supervisor.sock
supervisord -c /etc/supervisord.conf

踩坑

  • 启动Supervisord服务时报错:error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224

解决问题

  • 启动时手动指定配置文件
1
supervisorctl -c /etc/supervisord.conf

开机自启

CentOS

  • 修改配置文件

如果没有就创建新的配置文件

/usr/lib/systemd/system/supervisord.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf

[Install]
WantedBy=multi-user.target

启动开机自启

1
systemctl enable supervisord

查看开机自启状态

1
systemctl is-enabled supervisord

完成

参考文献

知乎——Alftred
博客园——从入门到删除数据库
CSDN——SooKie_p
博客园——孙大花