如何解決windows系統(tǒng)和linux系統(tǒng)中端口被占用
一、在windows操作系統(tǒng)中,查詢端口占用和清除端口占用的程序
1、查詢端口占用的進(jìn)程ID
點(diǎn)擊"開始"-->"運(yùn)行",輸入"cmd"后點(diǎn)擊確定按鈕,進(jìn)入DOS窗口,接下來分別運(yùn)行以下命令:
netstat -a -n 各個(gè)端口占用
netstat -ano 各個(gè)端口占用和進(jìn)程PID
netstat -aon | findstr "80"
C:Usersadmin>netstat -aon|findstr "80"
TCP 127.0.0.1:9080 0.0.0.0:0 LISTENING 4632
2、查看端口號(hào)所對應(yīng)的應(yīng)用程序
tasklist | findstr " 4632"
補(bǔ)充: tasklist /fi "pid eq 4632"
GROOVE.EXE 4632 Console 1 84,880 K
很明顯,是GROOVE.EXE 占用了80端口,GROOVE.EXE 一個(gè)IE的ACTIVEX控件。
3、終止進(jìn)程
taskkill /pid 4632 /F
或則使用?taskkill /f /t /im GROOVE.exe
再次查詢是否成功終止
tasklist | findstr "4632"
如果成功終止此次執(zhí)行命令后應(yīng)返回空.,則表示成功,終止 PID 為 4632 的進(jìn)程。
二、在Linux操作系統(tǒng)中,查詢端口占用和清除端口占用的程序
1、查詢端口號(hào)占用,根據(jù)端口查看進(jìn)程信息
[root@server2 ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 5014 root 3u IPv4 14346 TCP server2:http (LISTEN)
2、根據(jù)進(jìn)程號(hào)查看進(jìn)程對應(yīng)的可執(zhí)行程序
ps -f -p 進(jìn)程號(hào)
# ps -f -p 5014
UID PID PPID C STIME TTY TIME CMD
root 5014 1 0 17:26 ? 00:00:00 /usr/local/apache/bin/httpd -k
3、根據(jù)可執(zhí)行程序查看動(dòng)態(tài)鏈接
ldd 可執(zhí)行文件名
ldd /usr/local/apache/bin/httpd
linux-vdso.so.1 => (0x00007fff9dc90000)
libaprutil-0.so.0 => /usr/local/apache/lib/libaprutil-0.so.0 (0x00002af026fcd000)
4、根據(jù)端口號(hào)得到其占用的進(jìn)程的詳細(xì)信息
netstat -tlnp|grep 80
tcp 0 0 192.168.33.10:80 0.0.0.0:* LISTEN 5014/httpd
tcp 0 0 0.0.0.0:48054 0.0.0.0:* LISTEN 5386/java
這一步驟等于剛才上面的一二兩個(gè)步驟
5、根據(jù)端口號(hào)查詢,查詢其占用進(jìn)程ID
netstat -tlnp|grep 80|awk {print 7}|awk -F / {print 1}
5014
或則是用下面的命令
netstat -pan|grep 80
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-?a 顯示所有連接和監(jiān)聽端口。
-b 顯
示包含于創(chuàng)建每個(gè)連接或監(jiān)聽端口的可執(zhí)行組件。在某些情況下已知可執(zhí)行組件
擁有多個(gè)獨(dú)立組件,并且在這些情況下包含于創(chuàng)建連接或監(jiān)聽端口的組件序列被顯示。這種情況下,可執(zhí)行組件名 在底部的 []
中,頂部是其調(diào)用的組件,等等,直到 TCP/IP 部分。注意此選項(xiàng) 可能需要很長時(shí)間,如果沒有足夠權(quán)限可能失敗。
-e 顯示以太網(wǎng)統(tǒng)計(jì)信息。此選項(xiàng)可以與 -s選項(xiàng)組合使用。
-n 以數(shù)字形式顯示地址和端口號(hào)。
-o 顯示與每個(gè)連接相關(guān)的所屬進(jìn)程 ID。
-p
proto 顯示 proto 指定的協(xié)議的連接;proto 可以是下列協(xié)議之一: TCP、UDP、TCPv6 或
UDPv6。 如果與 -s 選項(xiàng)一起使用以顯示按協(xié)議統(tǒng)計(jì)信息,proto 可以是下列協(xié)議之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 顯示路由表。
-s 顯示按協(xié)議統(tǒng)計(jì)信息。默認(rèn)地,顯示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統(tǒng)計(jì)信息;
-p 選項(xiàng)用于指定默認(rèn)情況的子集。
-v 與 -b 選項(xiàng)一起使用時(shí)將顯示包含于 為所有可執(zhí)行組件創(chuàng)建連接或監(jiān)聽端口的組件。
interval 重新顯示選定統(tǒng)計(jì)信息,每次顯示之間 暫停時(shí)間間隔(以秒計(jì))。按 CTRL+C 停止重新 顯示統(tǒng)計(jì)信息。如果省略,netstat 顯示當(dāng)前 配置信息(只顯示一次)
6、一次性的清除占用80端口的程序
lsof -i :80|grep -v "PID"|awk {print "kill -9",$2}|sh
7、手工終止進(jìn)程的運(yùn)行
kill 5014
如果終止不了,可以強(qiáng)制終止
kill -9 5014
lsof -i:80
總結(jié):Linux下端口被占用問題解決辦法
1.確認(rèn)端口是否被占用:netstat -tln 9704(被占用端口號(hào))
2.查看該端口被哪個(gè)進(jìn)程占用:lsof -i 9704(被占用端口號(hào))
3.確認(rèn)沒有問題之后,殺!kill -9 pid(占用該端口的進(jìn)程id)
1.本站主要是為了記錄工作、學(xué)習(xí)中遇到的問題,可能由于本人技術(shù)有限,內(nèi)容難免有紕漏,一切內(nèi)容僅供參考。
2.本站部分內(nèi)容來源互聯(lián)網(wǎng),如果有圖片或者內(nèi)容侵犯您的權(quán)益請聯(lián)系我們刪除!
3.本站所有原創(chuàng)作品,包括文字、資料、圖片、網(wǎng)頁格式,轉(zhuǎn)載時(shí)請標(biāo)注作者與來源。