[supervisor] 遇到的两个问题

问题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

reference

supervisor原理及如何使用
linux下3种高效Kill掉所有python进程的方法(包括编写运行脚本 .sh)

你可能感兴趣的:([supervisor] 遇到的两个问题)