Mac OS X中解決socket.error: [Errno 48] Address already in use 埠佔用問題

前言

在OS X中使用GAE引擎來科學上網比如goagent或者wallproxy,可能會在啟動過程中出現如下報錯然後導致服務啟動不成功。

原因

其實就是因為你曾啟動過相同或者類似的服務佔用了這個端口,一般來講,在Mac上直接用Python啟動的話,會導致退出不完整,你不能通過點擊GUI的“退出”按鈕來一步到位,後台的Python進程還是存在的,而它就是一直佔用端口不釋放的元兇。

解決辦法

一個是改掉默認的80878086端口,另一個,就是乾掉佔用端口的程序。

前者立竿見影,但缺點是你總不能一天換一個的吧,如果說是因為其他應用佔用端口還好說,那要是因為退出不完整呢?所以,後者才是治標治本的解決辦法。但是想要找到這個佔用端口的程序,就要引入下面的內容了:

lsof的命令

簡介

lsof的(list open files)命令是一個列出當前系統打開文件的工具。在類UNIX環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以我們使用它來找出佔用了端口的程序,看看它究竟是不是衝突是不是錯誤。

lsof的-i 用以顯示符合條件的進程情況

所以,我們使用如下命令即可查找出佔用了某個端口的程序和其對應的PID

然後使用下面的命令幹掉對應的進程:

對了,如果你想要看看這個程序是什麼,這裡就不推薦使用命令行來完成了,當然,再次使用lsof命令是可以的,但小編還是推薦各位用“活動監視器”來查找pid——畢竟,系統有這個圖形功能了。

本文由 落格博客 原創撰寫:落格博客 » Mac OS X中解決socket.error: [Errno 48] Address already in use 埠佔用問題

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/536.html

關於作者

R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

註釋

發表評論

您的電子郵件地址不會被公開. 必填字段標 *