我正在运行 pylons,我这样做了: paste server development.ini 它正在运行:5000
但是当我再次尝试运行命令时: paste serve development.ini
我收到此消息:socket.error: [Errno 98] 地址已在使用中
有任何想法吗?
我在论坛中发现了这个技巧:
这将杀死所有监听端口 5000 的程序
kill -9 `fuser -n tcp 5000`
通常这意味着它仍在运行,但只有在它处于守护程序模式时才会发生这种情况。启动它后,你会得到一个命令提示符,还是必须用 Ctrl-C 来停止它?
如果您返回命令提示符,则它是守护程序模式,您必须使用以下命令停止它
paster server development.ini stop
如果您使用 Ctrl-C(当然不是 Ctrl-Z)停止它,我不知道。
据我了解您的问题,您启动了一些应用程序以侦听端口 5000。然后不停止它(?),您尝试启动另一个实例以侦听同一端口?如果是这样,你就不会成功。
您始终可以通过使用检查哪个应用程序正在侦听哪个端口号netstat
(对于 Windows 和类 UNIX 系统,我没有其他人的经验)。
当服务器意外死亡并且没有正确关闭它的套接字时,这也发生在我身上。本质上,即使进程已经终止,套接字仍被列为对操作系统打开。我发现如果我等待 30-60 秒,操作系统会意识到相关进程已经死亡,并自动清理套接字。
您正在使用的默认端口 8080。您应该在命令后添加“-p 10000”以占用端口 10000
自然地netstat
(netstat -an | grep 5000
在 linux 上成功了)。会抢港口
但是我发现这个另一个问题有同样的错误。
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
本质上 Python 需要很长时间才能打开套接字。
我尝试了所有赞成的答案,但没有人适合我。但是下面的命令可以解决问题。
sudo kill $(sudo lsof -t -i:5000)
这会杀死监听端口的进程5000
。