Debian Wheezy上的主管:另一个程序已经在监听我们的HTTP服务器配置使用的端口

Debian Wheezy上的主管:另一个程序已经在监听我们的HTTP服务器配置使用的端口,debian,supervisord,Debian,Supervisord,当我运行service supervisor start时,我遇到以下错误: Starting supervisor: Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord. For help, use /usr/bin/sup

当我运行
service supervisor start
时,我遇到以下错误:

Starting supervisor: Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h
/var/log/superuser/supervisord.log的内容:

2014-08-04 16:25:45,891 CRIT Supervisor running as root (no user in config file)
2014-08-04 16:25:45,891 WARN Included extra file "/etc/supervisor/conf.d/com.domain.subdomain.conf" during parsing
好消息:
-我在数字海洋服务器上使用Debian Wheezy。
-我试着用同样的规格检查ports supervisor在一个干净的流浪箱中使用的端口,但我得到了同样的错误


如何检查哪个端口是此错误的来源?

我通过断开
.sock
文件的链接解决了问题

sudo unlink /var/run/supervisor.sock

如果这没有帮助,您应该在
/tmp/supervisor.sock

中检查并取消链接该文件,然后在终端中键入该文件

ps -ef | grep supervisord
你会得到一些像这样的pid

root   2503  1  0 Nov19 ?  00:03:23 /usr/bin/python /usr/bin/supervisord
root   21337 2556  0 18:15 pts/8   00:00:00 grep --color=auto supervisord
PID为2503

然后键入以下内容:

kill -s SIGTERM 2503  

这应该行得通

我的情况有点特殊,但这可能还是有帮助的

我在同一台主机上运行了几个docker容器。所有的集装箱都在运转。每个容器都有几个由主管监控的过程

第一个容器总是出现,而所有其他容器都会失败,并警告OP提到:
另一个程序已经在侦听我们的一个HTTP服务器配置使用的端口。在启动supervisord之前先关闭此程序。

对我来说,问题是我的主管配置中有以下行:

[inet_http_server]
port=127.0.0.1:9001

[supervisorctl]
第一个容器将成功绑定到端口9001,随后的每个容器都将无法启动,因为它们还将尝试绑定到已使用的同一个端口

我将这些行替换为以下内容,从localhost:9001上的http服务器绑定切换到运行在unix域套接字上的服务器

[unix_http_server]
file=/var/run/supervisor.sock

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

这修复了端口冲突,所有容器都可以启动。

这里也有同样的问题。解决方案是
systemctl stop supervisor.service
没有停止服务supervisord可能仍在运行,尽管您不这么认为

请确保在手动断开套接字链接之前已尝试过此操作


我经常在执行
/etc/init.d/supervisor restart
时遇到问题,尽管
/etc/init.d/supervisor stop&/etc/init.d/supervisor start
有效。

类似于@N'falyKaba的答案,但可能更直接一些,对于较新版本的supervisor,您可以使用
supervisor CTL pid
来获取pid,杀死它,然后重新启动:

$ kill -s SIGTERM $(supervisorctl pid)
要重新启动:

$ supervisord -c /path/to/supervisord.conf

来源:。

您可以使用netstat找出哪个进程正在侦听哪个进程port@Hemang我知道这一点,但我不知道在这种情况下哪个端口是有趣的。我怎么能发现呢?我不确定监控程序的配置和它使用的端口。但是,如果您可以让它在不同的机器上运行,您仍然可以使用netstat来找出运行supervisor的端口。@Hemang它在运行的服务器上,所以我不能做出不确定的事情。但我会尽快把它安装在一个流浪汉的盒子上。感谢当supervisord在任何容器外的主机上以及在同一主机上的ubuntu docker容器内使用时,就会出现这种症状。。。两者都有自己的文件/var/run/supervisor.sock。。。然而,当从容器内部发出停止和启动命令时,我看到这个问题的标题上显示的错误消息。当我遇到这个问题时,它没有取消与sock文件的链接,这就是问题所在。我想这有点像权限问题,但我已经不记得了。当你在“更高层次的环境”中使用它时,会出现一些不同的问题,而你的问题更像是与Docker一起工作时遇到的问题。但是,是的,我认为越来越多的人开始使用Docker(就像我在大多数情况下使用它一样),所以我相信它对一些人会有帮助。谢谢:)确实有这个问题,现在看来很明显!.sock文件的用途是什么?@Ben.sock文件是一个特殊的文件,它是一个unix域套接字,用于进程间联网-您可以在这里看到更多-在我的例子中,它位于unlink/var/run/supervisor/supervisor.sock下。这不是一个好主意,如果supervisor仍在运行,您将丢失pid,并且您的supervisor将永远运行。这个答案是最好的:您可以使用find命令搜索确切的位置
sudo find/-name supervisor.sock