查询端口占用情况的命令(windows、linux)
说明:在部署一个项目或者应用时,启动项目或应用后,验证项目或者应用是否正常启动,我们常常通过查询当前系统端口占用情况来确认。同时,当项目或应用启动失败,提示端口被占用时,也需要我们通过命令去排查是哪个应用占用了端口。
本文介绍分别在windows、linux操作系统中查询端口占用情况的命令
windows
在windows操作系统中,查看当前系统端口使用情况,我们要使用的命令是 netstat
,如下图,可显示活动的 TCP 连接,包括本地地址、外部地址以及连接状态。
可配合以下参数
-
-a:显示所有活动的 TCP 连接以及监听的 TCP 和 UDP 端口;
-
-n:以数字形式显示地址和端口号;
-
-o:显示与每个连接相关的进程 ID(PID),以方便确定是哪个进程在使用网络连接;
配合以上参数后,查询如下,能查到端口占用情况及对应进程的PID
当然,这里展示的是所有的数据,配合管道符(|
),查询指定端口的占用情况,如下,查询Redis应用占用的端口(6379)情况
netstat -ano | findstr [端口]
进程的PID是7252,打开任务管理器,看一下,对应的应用就是Redis服务(Redis服务启动失败,提示端口被占用,也是这样的排查流程,把占用6379端口的进程kill掉,再重新启动Redis服务)
linux
linux操作系统查看端口占用情况的命令比较丰富,有以下几种:
第一种,直接使用ps -ef
ps -ef | grep [端口号]
如下,查看Redis所用端口6379的应用。这种方式是通过应用程序来推测的,就是寻找应用程序启动脚本中绑定的端口是否存在我指定的端口,如果有这样的应用程序,说明这个端口就已经在使用中。
第二种,使用netstat
netstat -ano | grep [端口号]
与windows相同(或者说windows与linux相同),也可以使用netstat
命令查看指定端口的占用情况。如下,查看6379端口的占用情况。
第三种,使用ss
命令
ss
是一个用于显示套接字统计信息的工具,在iproute
包中,可以敲下面的命令查看是否已安装(前提是你的操作系统使用的包管理工具是yum)
yum list installed | grep iproute
如果系统中没有,需要安装,yum安装命令如下:
yum install iproute
ss命令配合的参数有:
-
-t:显示 TCP 类型的套接字连接;
-
-u:显示 UDP 套接字连接;
-
-p:显示每个套接字关联的进程 ID(PID)和进程名称;
-
-l:列出所有处于监听状态的套接字;
配合查询6379端口占用情况,如下:
ss -tupl | grep 6379
总结
本文介绍了分别在windows、linux操作系统中,查看某端口占用情况的命令。