Windows与Linux端口占用、查看的方法总结
文章目录
- Windows与Linux端口占用、查看的方法总结
- 一、Windows
- 1.1Windows查看所有的端口
- 1.2查询指定的端口占用
- 1.3查询PID对应的进程
- 1.4查杀死/结束/终止进程
- 二、Linux
- 2.1lsof命令
- 2.2netstat命令
一、Windows
1.1Windows查看所有的端口
【WIN+R】打开运行窗口,输入cmd并回车,然后在黑色的命令终端输入
netstat -ano,系统将显示所有的端口占用情况
字段解释:
协议:包含TCP和UDP
本地地址:【四个点分十进制数:端口】属于IPv4,如果是[::]或者[一长串的十六进制数]则属于IPv6。均属于计算机本地ip。
外部地址:是属于本地与外网进行通信的IP地址
状态:
LISTENING–侦听状态;
ESTABLISHED–已经建立连接,并正在通信;
CLOSE_WAIT–对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT,此时我方要调用close()来使得连接正确关闭;
TIME_WAIT–我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
SYN_SENT–SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多SYN_SENT的原因。
PID(进程号):作为一种身份别名
1.2查询指定的端口占用
在命令窗口,输入【netstat -ano | findstr “指定端口”】,例如查询3389端口
1.3查询PID对应的进程
在命令窗口,输入【tasklist | findstr “指定PID号”】,例如上图的1308
一定要升级为管理员权限否则无法杀死
1.4查杀死/结束/终止进程
在命令窗口,输入【taskkill /f /t /im 程序名】,例如上图中的mysqld.exe
二、Linux
2.1lsof命令
lsof(list open files):是一个列出当前系统打开文件的工具。若是提示权限不够,可以使用sudo+命令。
lsof查看端口占用语法格式:
lsof -i:端口号
2.2netstat命令
netstat -tunlp用于显示tcp和udp的端口和进程等相关情况。
netstat -tunlp | grep 端口号
-t(TCP):显示TCP相关选项。
-u(UDP):显示UDP相关选项。
-n:拒绝显示别名,能显示数字的全部转化为数字。
-l:列出在listen状态的服务
-p:显示建立相关链接的程序名。
例如,查看443端口的情况
netstat -tunlp | grep 443
查看当前所有的tcp端口netstat -tnlp
在查询到端口占用的进程后,就能通过kill命令来结束相应占用端口的进程。
kill -9 PID