範文齋

linux如何查看端口被哪個進程佔用?

我們在使用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