Linux、windows命令学习之查看端口占用以及关闭相应的进程

在linux服务器端排查问题时,有时会遇到某个端口被多个应用程序占用,或杂windows开发时,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 :

Windows环境下:

开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"

C:\Users\Administrator>netstat -ano
活动连接
协议 本地地址 外部地址 状态 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

 结束该应用进程,输入以下命令:

C:\>taskkill /f /t /im mysqld.exe

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