https://www.logcg.com/archives/536.html
粘貼原文防止丟失
Mac OS X中解決socket.error: [Errno 48] Address already in use 端口占用問題
關(guān)閉pycharm時 申請的端口號并不會被釋放, 因為后臺的python 一直在運行
這里有個暫時的方法直接找到對應(yīng)的端口號啟用的pid 然后kill掉
原因
其實就是因為你曾啟動過相同或者類似的服務(wù)占用了這個端口,一般來講,在Mac上直接用Python啟動的話,會導(dǎo)致退出不完整,你不能通過點擊GUI的“退出”按鈕來一步到位,后臺的Python進程還是存在的,而它就是一直占用端口不釋放的元兇。
解決辦法
一個是改掉默認的8087、8086端口,另一個,就是干掉占用端口的程序。
前者立竿見影,但缺點是你總不能一天換一個的吧,如果說是因為其他應(yīng)用占用端口還好說,那要是因為退出不完整呢?所以,后者才是治標(biāo)治本的解決辦法。但是想要找到這個占用端口的程序,就要引入下面的內(nèi)容了:
lsof命令
lsof(list open files)命令是一個列出當(dāng)前系統(tǒng)打開文件的工具。在類UNIX環(huán)境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。所以我們使用它來找出占用了端口的程序,看看它究竟是不是沖突是不是錯誤。
lsof -i 用以顯示符合條件的進程情況
所以,我們使用如下命令即可查找出占用了某個端口的程序和其對應(yīng)的PID
sudo lsof -i:8087
//因為有些時候是以root身份運行,所以請務(wù)必加上sudo
然后使用下面的命令干掉對應(yīng)的進程:
sudo kill *pid*//*部分用對應(yīng)進程的PID來填充哦