前言
通过Supervisord将进程升级为守护进程(daemon)
下载依赖
CentOS
1 2
| yum install epel-release yum install supervisor
|
修改配置
/etc/supervisord.conf1 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服务时指定配置文件
启动Supervisord维护的守护进程
1
| supervisorctl start <daemon>
|
停止Supervisord维护的守护进程
1
| supervisorctl stop <daemon>
|
重启Supervisord维护的守护进程
1
| supervisorctl restart <daemon>
|
重载Supervisord配置并重启维护的守护进程
1
| supervisorctl reload <daemon>
|
查看Supervisord所有守护进程状态
踩坑
- 执行
supervisorctl
命令时报错:unix:///var/run/supervisor/supervisor.sock no such file
原因
解决问题
- 手动创建
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.service1 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
博客园——孙大花