我试图从mac终端设置一个python服务器。

我导航到文件夹位置使用:

python -m SimpleHTTPServer

但这给了我错误:

socket.error: [Errno 48] Address already in use

我以前使用相同的命令打开了一个连接 在我的电脑里的不同位置的一个不同的网站。


当前回答

Use

 sudo lsof -i:5000

这将为您提供使用该端口的进程列表(如果有的话)。 一旦给出了进程列表,使用PID列上的id终止进程使用

 kill 379 #use the provided PID

其他回答

以防上述解决方案不起作用:

获取进程正在侦听的端口: $ ps ax | grep python 终止进程 $ kill PROCESS_NAME

我是Python的新手,但经过简单的研究后,我发现这是典型的套接字被绑定。碰巧该套接字仍在使用,您可能需要等待才能使用它。或者,你可以添加:

tcpSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

这将使端口在更短的时间内可用。在我的例子中,它几乎立即使端口可用。

Use

 sudo lsof -i:5000

这将为您提供使用该端口的进程列表(如果有的话)。 一旦给出了进程列表,使用PID列上的id终止进程使用

 kill 379 #use the provided PID

顺便说一下,为了防止这种情况首先发生,在SimpleHTTPServer仍然正常运行时,只需在终端中按下Ctrl+C。这将“正确地”停止服务器并释放端口,这样您就不必在重新启动服务器之前再次查找并杀死该进程。

(Mods:我确实试图把这条评论放在最好的答案上,但我没有足够的声誉。)

简单的解决方案:

查找使用端口8080的进程:

sudo lsof -i:8080

终止该端口上的进程:

kill $PID

kill -9 $PID  //to forcefully kill the port

PID从步骤1的输出中获得。