有时启动tomcat,会启动失败,说端口已经被占用,那么到底是哪个程序占用了端口呢?
如何判断是哪个进程(程序)占用了指定的端口呢?
下面我会分两个平台(windows,linux)来进行详细说明
-
windows 系统
通过如下命令查找占用指定端口的pid(进程id)
netstat -ano|findstr <指定的端口号>
例如,查找占用端口8080 的进程
说明pid为1532 的进程占用了8080端口
然后,我们打开任务管理器,找到进程,
那么如何杀死进程呢?
taskkill /pid 1532 /f
注意:"/pid"后面跟的就是pid
2 linux
通过如下命令查找占用指定端口的pid(进程id)
netstat -aonp |grep ":80[ ]+"|awk -F" " {'print $0'}
这是查询占用80端口的进程
说明pid为11116 的进程占用了80端口
优化后如下:
netstat -aonp |grep "^[a-z]+[ ]+0[ ]+0[ ]+[0-9.]+:80[ ]+"|awk -F" " {'print $0'}
那我们来验证一下
果然是tomcat 占用了80端口.
如何只显示pid呢?
netstat -anp |grep "^[a-z]+[ ]+0[ ]+0[ ]+[0-9.]+:80[ ]+"|awk -F" " {'print $7'}|cut -d"/" -f1
那么在linux中如何杀死进程呢?
kill -9 11116
(作者:hw1287789687 来源:http://hw1287789687.iteye.com/blog/2212266)