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