乐趣区

关于supervisor: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)

退出移动版