Mac OS X中解决socket.error: [Errno 48] Address already in use 端口占用问题(转)
来源:互联网 发布:电话座机迁走了没网络 编辑:程序博客网 时间:2024/05/21 09:23
Mac OS X中解决socket.error: [Errno 48] Address already in use 端口占用问题
前言
在OS X中使用GAE引擎来科学上网比如goagent或者wallproxy,可能会在启动过程中出现如下报错然后导致服务启动不成功。
原因
其实就是因为你曾启动过相同或者类似的服务占用了这个端口,一般来讲,在Mac上直接用Python启动的话,会导致退出不完整,你不能通过点击GUI的“退出”按钮来一步到位,后台的Python进程还是存在的,而它就是一直占用端口不释放的元凶。
解决办法
一个是改掉默认的8087、8086端口,另一个,就是干掉占用端口的程序。
前者立竿见影,但缺点是你总不能一天换一个的吧,如果说是因为其他应用占用端口还好说,那要是因为退出不完整呢?所以,后者才是治标治本的解决办法。但是想要找到这个占用端口的程序,就要引入下面的内容了:
lsof命令
简介
lsof(list open files)命令是一个列出当前系统打开文件的工具。在类UNIX环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以我们使用它来找出占用了端口的程序,看看它究竟是不是冲突是不是错误。
lsof -i 用以显示符合条件的进程情况
所以,我们使用如下命令即可查找出占用了某个端口的程序和其对应的PID
然后使用下面的命令干掉对应的进程:
对了,如果你想要看看这个程序是什么,这里就不推荐使用命令行来完成了,当然,再次使用lsof命令是可以的,但小编还是推荐各位用“活动监视器”来查找pid——毕竟,系统有这个图形功能了。
原博客地址:https://www.logcg.com/archives/536.html
阅读全文