快速解決Windows和Linux下的端口沖突問題
在測試和運維環(huán)節(jié)經(jīng)常需要部署多個應用程序在同一臺服務(wù)器上,這樣經(jīng)常就會碰到端口沖突的問題(即端口被其他服務(wù)程序占用),那么如何查找出是哪個應用程序占用了要使用的端口呢?下面幾招教你快速解決端口沖突問題。
netstat命令說明
netstat命令是一個監(jiān)控TCP/IP網(wǎng)絡(luò)的非常有用的工具,它可以顯示路由表、實際的網(wǎng)絡(luò)連接以及每一個網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息,在Windows和CentOS系統(tǒng)下命令參數(shù)發(fā)現(xiàn)略有區(qū)別。
Windows系統(tǒng)下的netstat命令參數(shù):
CentOS系統(tǒng)下的netstat命令參數(shù):
通過對比netstat在Windows和CentOS系統(tǒng)下命令參數(shù)我們可以看出在展示進程號上,Windows系統(tǒng)中加-o參數(shù)來顯示進程號,而CentOS系統(tǒng)中加-p參數(shù)來顯示進程號;所以使用netstat展示端口連接時Windows和CentOS系統(tǒng)下命令分別為:netstat -ano和netstat –anp。這兩個命令是展示所有的端口連接,如果端口連接很多時不方便查找我們想要的端口是否存在。此時需要再加上端口進行更加查找展示,Windows下查找的命令是findstr *,CentOS下查找的命令是grep *(此處的*使用端口號替代)。
查看端口是否被占用
Windows下查看端口是否被占用的命令為netstat -ano | findstr "8088",若已有程序占用執(zhí)行結(jié)果如下圖:
CentOS下查看端口是否被占用的命令為netstat -anp | grep "8083",若已有程序占用執(zhí)行結(jié)果如下圖:
通過進程號查看占用端口的應用程序
netstat只能查看占用端口的進程號,所以還需要其他命令來查詢具體應用程序,Windows系統(tǒng)我們使用命令wmic process get name,executablepath,processid | findstr 2984(2984為使用netstat查詢的到的進程號),如下圖:
CentOS系統(tǒng)我們使用命令ps -ef | grep 48963 (48963為使用netstat查詢的到的進程號),如下圖:
Java應用程序通過jps命令查看應用程序路徑
從上面可以看出均是Java應用程序,但Windows系統(tǒng)下沒有像CentOS系統(tǒng)下那樣列出了應用程序路徑,所以還需要使用Java自帶的命令行工具jps 2984(2984為使用netstat查詢的到的進程號)來查看Java應用程序路徑,如下圖:
可以看到執(zhí)行jps 2984命令后進程號為2984的整個Java應用程序的信息,我們找到user.dir = D:\nexus-2.8.1-01-bundle\nexus-2.8.1-01即可知道占用端口的應用程序路徑了。
通過以上的步驟相信如果再出現(xiàn)端口沖突的問題大家都應該能快速找到占用端口的應用程序了。如果大家有更好的方法可以關(guān)注我們的微信公眾號,回復消息與我們進行探討。
本文轉(zhuǎn)載自微信公眾號「 麻辣軟硬件」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 麻辣軟硬件公眾號。