今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占用。
使用命令:
ps -aux | grep tomcat
发现并没有8080端口的Tomcat进程。
使用命令:netstat –apn
查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name
clip_image002
发现8080端口被PID为9658的Java进程占用。
进一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看
clip_image004
就可以明确知道8080端口是被哪个程序占用了!然后判断是否使用KILL命令干掉!
方法二:直接使用 netstat -anp | grep portno
即:netstat –apn | grep 8080
netstat参数说明
netstat参数虽然很多,但是常用的不多,主要是下面几个参数:
netstat -[atunlp]
-a :all,表示列出所有的连接,服务监听,Socket资料
-t :tcp,列出tcp协议的服务
-u :udp,列出udp协议的服务
-n :port number, 用端口号来显示
-l :listening,列出当前监听服务
-p :program,列出服务程序的PID
如果你需要深入了解,可以用man netstat查看netstat命令的详细说明。
netstat命令测试
netstat -atunlp
输出结果如下图
netstat命令演示
其中
Proto :网络传输协议,主要为tcp和udp
Local Address :本地的ip:port
Foreign Address:远程主机的ip:port(外部访问该服务的ip及端口)
State :连线状态,主要有监听( LISTEN )和建立(ESTABLISED)
PID :服务的进程编号
Program name:服务名称
上面的倒数第二行的状态ESTABLISED,因为当前我正使用putty连接到这台主机。