
在開服務(wù)(指定端口為8000)的時(shí)候遇到如下的報(bào)錯(cuò)信息:Error: That port is already in use.
問題:8000端口被占用,該如何釋放被占用的端口?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 解決方案
part one 先來看下端口使用情況:
1.netstat ?-anp ?|grep ? 端口號(hào) 可以查看到端口是否被占用
如下,我以8000為例,netstat ?-anp ?|grep ?8000(此處備注下,我是以root用戶操作,如果是普通用戶需要加上了sudo, sudo netstat ?-anp ?|grep ?8000),如下圖1

圖1中主要看監(jiān)控狀態(tài)為L(zhǎng)ISTEN表示已經(jīng)被占用,最后一列顯示被服務(wù)python占用,查看具體端口號(hào),只要有如圖這一行就表示被占用了。(tcp 端口號(hào) listen 這三個(gè))
2.netstat ? -nultp(此處不用加端口號(hào))
該命令是查看當(dāng)前所有已經(jīng)使用的端口情況,如圖2:

有上圖可以看到 我的8000,111,15458 等等端口被占用了。
3.netstat ?-anp ?|grep ?82查看82端口的使用情況,如圖3:

仔細(xì)看這個(gè)圖!可以看出并沒有LISTEN那一行,所以就表示沒有被占用。
此處注意!圖中顯示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,
查看具體端口是否被占用時(shí),必須要看到tcp,端口號(hào),LISTEN那一行,才表示端口被占用了
part two,準(zhǔn)備殺掉占用端口的服務(wù)
1.查看端口屬于哪個(gè)程序?端口被哪個(gè)進(jìn)程占用 lsof -i:8000 看下圖4

可以看到 占用8000端口的服務(wù)的pid為26275
2.殺掉占用端口的進(jìn)程? ?kill -9 26175
殺完再lsof -i:8000 啥也沒有 就說明被刪掉了

today over!