✅ 你的 supervisord 实际 sock 文件路径是:
/tmp/supervisor.sock.2219324
这是从 lsof 得到的:
/tmp/supervisor.sock.2219324
这说明:
- supervisord.conf 中写的是
/tmp/supervisor.sock - 但 supervisor 启动时发现已有同名 sock ,所以自动创建了一个带 PID 后缀的文件:
→/tmp/supervisor.sock.<old_pid>
因此 supervisorctl 无法连接 /tmp/supervisor.sock(因为文件不存在)。
这是经典问题:旧 sock 未清理 + supervisord 被错误重启。
🔥 立即修复(最干净的做法)
1️⃣ 杀掉 supervisord(安全)
bash
sudo pkill supervisord
确认停止:
bash
ps -ef | grep supervisord
2️⃣ 删除所有残留 sock 文件
bash
sudo rm -f /tmp/supervisor.sock*
3️⃣ 重新启动 supervisord(用正确配置)
bash
sudo /data/anaconda3/envs/py313/bin/supervisord -c /etc/supervisor/supervisord.conf
确认 sock 创建:
bash
ls -l /tmp/supervisor.sock
应该出现:
/tmp/supervisor.sock
4️⃣ supervisorctl 就能正常连接了
bash
sudo /data/anaconda3/envs/py313/bin/supervisorctl -c /etc/supervisor/supervisord.conf status
再执行你想要的命令:
bash
sudo /data/anaconda3/envs/py313/bin/supervisorctl -c /etc/supervisor/supervisord.conf restart med_unieval_server
🧠 为什么之前会有 .PID 后缀?
因为 supervisord 之前崩过、被 kill -9 过,或系统异常重启,导致旧 sock 未清理。
supervisord 启动时发现 /tmp/supervisor.sock 已存在,为避免冲突自动改名为:
/tmp/supervisor.sock.<old_pid>
但 supervisorctl 仍然尝试连接 /tmp/supervisor.sock → 报错。