知識(shí)要點(diǎn)
lsof -i:port
netstat -anp | grep port
問題描述
我們有時(shí)會(huì)在服務(wù)啟動(dòng)的時(shí)候遇到端口被占用的情況搓译,比如我下面在啟動(dòng) BERT Server 端的時(shí)候,報(bào)了 ERROR:"Address already in use"纳令,這種狀況的話,服務(wù)端啟動(dòng)就會(huì)失敗結(jié)束
解決方案
首先我們查閱服務(wù)啟動(dòng)時(shí)使用的端口费什,如圖服務(wù)啟動(dòng)配置所示
那么現(xiàn)在讓我們來查看一下所有端口的使用情況楷扬,方式是命令:lsof -i
我們通過端口信息看到 5555 端口正在監(jiān)聽狀態(tài),但是該端口正是我們服務(wù)啟動(dòng)的端口廷粒,所以不出意外的導(dǎo)致占用情況
當(dāng)然端口使用的列表可能會(huì)很長窘拯,找出來就會(huì)很麻煩,所以我們也可以更加直接的使用 lsof -i:5555 來查詢 5555 端口的使用情況坝茎,如下圖所示
把查詢到被占用端口相對(duì)應(yīng)的進(jìn)程 kill 掉就好了涤姊,這個(gè)占用是由于剛才網(wǎng)絡(luò)不穩(wěn)定,ssh 斷線導(dǎo)致的異常占用
處理掉這些進(jìn)程以后嗤放,重啟 BERT 服務(wù)端就可以了思喊。我們看到 BERT Server 端成功啟動(dòng),如下所示
另外還有一種查詢方式是 netstat -anp | grep 5555次酌,我們正好用來看一下服務(wù)端啟動(dòng)后的端口占用
當(dāng)然這個(gè) lsof -i:5555 查詢的結(jié)果是相同的