我们在使用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 cba001.eapac:hacl-hb (LISTEN)
named 26751 root 22u IPv4 64750503 TCP 192.168.0.10:hacl-hb (LISTEN)
named 26751 root 512u IPv4 64750498 UDP localhost:hacl-hb
named 26751 root 513u IPv4 64750500 UDP cba001.eapac:hacl-hb
named 26751 root 514u IPv4 64750502 UDP 192.168.0.10: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
[linux如何查看端口被哪个进程占用?]