Supervisor管理GO程序
安装
apt-get install supervisor使用说明
supervisor配置文件:/etc/supervisor/supervisord.conf 子进程配置文件路径:/etc/supervisor/conf.d/
常用命令说明
# 查看所有进程的状态
supervisorctl status
# 停止iot
supervisorctl stop iot
# 启动iot
supervisorctl start iot
# 重启iot
supervisorctl restart iot
# 配置文件修改后使用该命令加载新的配置
supervisorctl update
# 重新启动配置中的所有程序
supervisorctl reload配置GO进程
[program:iot]
# 脚本目录
directory=/opt/iot
# 脚本执行命令
command=/opt/iot/main
# 日志输出
stdout_logfile=/opt/iot/supervisor/main.log
# supervisor启动的时候是否随着同时启动,默认True
autostart=true
autorestart=true
startsecs=5
priority=1
stopasgroup=true
killasgroup=true
常见问题
- unix:///var/run/supervisor.sock no such file
问题描述:安装好supervisor没有开启服务直接使用supervisorctl报的错
解决办法:supervisord -c /etc/supervisord.conf
- command中指定的进程已经起来,但supervisor还不断重启
问题描述:command中启动方式为后台启动,导致识别不到pid,然后不断重启,这里使用的是elasticsearch,command指定的是$path/bin/elasticsearch -d
解决办法:supervisor无法检测后台启动进程的pid,而supervisor本身就是后台启动守护进程,因此不用担心这个
- 启动了多个supervisord服务,导致无法正常关闭服务
问题描述:在运行supervisord -c /etc/supervisord.conf之前,直接运行过supervisord -c /etc/supervisord.d/xx.conf导致有些进程被多个superviord管理,无法正常关闭进程。
解决办法:使用ps -fe | grep supervisord查看所有启动过的supervisord服务,kill相关的进程。