问题1 refused connection
问题现象
$ supervisorctl -c /root/ppe-detection/supervisord.conf
unix:///root/supervisor.sock refused connection
原因分析
supervisor 主要包含2个组件(实际还有别的):
- supervisord
主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。 - supervisorctl
客户端的命令行工具,提供一个类似shell的操作接口
每次使用 supervisorctl,需要先保证supervisord正常运行。
解决办法
# 1. 需要把之前开启的关于supervisor的都kill掉,先查看supervisor(本身也是基于python的)和其运行的python进程
$ ps aux | grep python
# kill可以下面这条指令,把supervisor和其运行的python进程全杀了
$ ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9
# 2. 重新开启supervisord
$ sudo supervisord -c supervisord.conf
# 3. 如果没有报错,则可以使用supervisorctl了
$ supervisorctl
问题2 unlinking stale socket
问题现象
$ sudo supervisord -c supervisord.conf
Unlinking stale socket /{some_dir}/supervisor.sock
问题分析
它说正在解除连接旧socket,那么帮它直接解除就好了。
问题解决
$ sudo supervisord -c supervisord.conf
Unlinking stale socket /{some_dir}/supervisor.sock
# 使用unlink指令,把上面这个supervisor.sock的路径复制下来
$ unlilnk /{some_dir}/supervisor.sock
# 然后就可以正常使用了
$ sudo supervisord -c supervisord.conf
$ supervisorctl
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。