linux如何查看端口被哪個進程佔用?
我們在使用linux系統的服務器時我們又時會突然發現發現服務器上某個端口起不來,老提示端口已經被佔用。而對於這種情況我們該怎麼解決呢?
使用命令:
ps -aux | grep tomcat
發現並沒有8080端口的Tomcat進程。
使用命令:netstat ?apn
查看所有的進程和端口使用情況。發現下面的'進程列表,其中最後一欄是PID/Program name
發現8080端口被PID爲9658的Java進程佔用。
進一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看
就可以明確知道8080端口是被哪個程序佔用了!然後判斷是否使用KILL命令幹掉!
方法二:直接使用
netstat -anp | grep portno
即:netstat ?apn | grep 8080
方法三:
Linux:
cba001:~ # lsof -i:5300
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
named 26751 root 20u IPv4 64750499 TCP localhost:hacl-hb (LISTEN)
named 26751 root 21u IPv4 64750501 TCP c:hacl-hb (LISTEN)
named 26751 root 22u IPv4 64750503 TCP :hacl-hb (LISTEN)
named 26751 root 512u IPv4 64750498 UDP localhost:hacl-hb
named 26751 root 513u IPv4 64750500 UDP c:hacl-hb
named 26751 root 514u IPv4 64750502 UDP :hacl-hb
[注]:執行lsof -i:5300以後就可以看到26751進程在TCP和UDP上都打開了5300端口.
cba001:~ # ps -ef|grep 26751
root 10118 26915 0 12:59 pts/8 00:00:00 grep 26751
root 26751 1 0 Jul06 ? 00:02:06 /opt/ipworks/IPWdns/usr/bin/named
[注]:執行ps -ef|grep 26751以後就可以看到是named進程打開了5300端口
查看進程ID:
lsof -w -n -i tcp:8080
fuser -n tcp 8080netstat -anp|grep :8080[[:blank:]]
殺掉佔用端口的進程PID:
kill -9 pidnumber