在linux服务器端排查问题时,有时会遇到某个端口被多个应用程序占用,或杂windows开发时,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 :
Windows环境下:
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"
活动连接
协议 本地地址 外部地址 状态 PID
TCP 0.0.0.0:7 0.0.0.0:0 LISTENING 3012
TCP 0.0.0.0:9 0.0.0.0:0 LISTENING 3012
TCP 0.0.0.0:13 0.0.0.0:0 LISTENING 3012
TCP 0.0.0.0:17 0.0.0.0:0 LISTENING 3012
TCP 0.0.0.0:19 0.0.0.0:0 LISTENING 3012
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 332
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 3348
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:902 0.0.0.0:0 LISTENING 3112
TCP 0.0.0.0:912 0.0.0.0:0 LISTENING 3112
TCP 0.0.0.0:2869 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2964
假如我们需要确定谁占用了我们的2964端口,在命令行输入以下命令:
C:\Users\Administrator>netstat -ano|findstr "2964"
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2964
发现端口被进程PID为2964的应用占用
查看进程PID为2964的应用是什么应用?在命令行输入以下命令:
C:\Users\Administrator>tasklist|findstr 2964
mysqld.exe 2964 Services 0 10,828 K
结束该应用进程,输入以下命令:
linux环境下:
1.查找被占用的端口
- netstat -tln
- netstat -tln | grep 8080
netstat -tln 查看端口使用情况,而netstat -tln | grep 8080则是只查看端口8080的使用情况
2.查看端口属于哪个程序?端口被哪个进程占用
lsof -i:8060
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Java 20804 root 36u IPv6 35452317 0t0 TCP *:pcsync-https (LISTEN)
3.杀掉占用端口的进程 根据pid杀掉
kill -9 进程id
kill -9 20804