在CentOS 7系统中,查询端口状态是日常运维和故障排查的常见操作,掌握多种查询方法可以帮助管理员更高效地监控网络服务,本文将介绍几种常用的端口查询工具及其使用场景,包括ss、netstat、lsof和firewall-cmd,并提供实际操作示例。

使用ss命令查询端口
ss是Linux系统推荐的替代netstat的工具,其查询速度更快且信息更全面,要查看所有监听端口,可执行:
ss -tulnp
参数说明:-t显示TCP端口,-u显示UDP端口,-l仅显示监听端口,-n以数字形式显示地址和端口,-p显示进程ID和名称,查询指定端口80的状态:
ss -tulnp | grep ':80'
使用netstat命令查询端口
尽管netstat逐渐被ss替代,但在某些旧系统中仍需使用,基本查询命令与ss类似:
netstat -tulnp
若需查看所有端口(包括监听和非监听状态),可添加-a参数,通过管道符可进一步过滤结果,
netstat -tulnp | grep ':3306'
使用lsof命令查询端口
lsof(List Open Files)功能强大,可用于查询端口对应的进程,查看占用80端口的进程:

lsof -i :80
参数-i指定网络地址,80表示端口号,若需查看所有TCP端口,可使用:
lsof -iTCP -sTCP:LISTEN -P -n
查询防火墙规则中的端口
CentOS 7默认使用firewalld管理防火墙,查询已开放的端口需结合firewall-cmd:
firewall-cmd --list-ports
查看特定服务是否允许通过防火墙,例如http服务:
firewall-cmd --query-service=http
综合应用场景
在实际操作中,可能需要组合使用多个命令,当发现端口无法访问时,可依次检查:
- 使用
ss确认端口是否监听; - 用
lsof定位占用端口的进程; - 通过
firewall-cmd验证防火墙规则。
相关问答FAQs
Q1: 如何查看CentOS 7中某个进程占用的所有端口?
A1: 可通过lsof命令结合进程ID(PID)实现,若进程PID为1234,执行:

lsof -Pan -p 1234 -i
该命令将显示PID为1234的进程所有网络连接及端口信息。
Q2: 为什么ss命令查询不到某些端口,但netstat可以?
A2: 可能是因为ss未安装或未更新,在CentOS 7中,ss默认已安装,但若被误删,可通过yum install iproute重新安装。ss的某些参数与netstat略有不同,建议使用ss -tulnp确保查询范围全面。