博客 / 詳情

返回

[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)

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.