在Linux系统中,查看端口是否启用是运维和开发过程中非常常见的操作,无论是确认服务是否正常启动,还是排查端口冲突问题,都需要准确判断端口的占用和启用状态。Linux系统提供了多个命令行工具来实现这个功能,不同工具的使用方式和输出信息各有特点,用户可以根据实际场景选择合适的工具。

使用netstat查看端口是否启用
netstat是比较传统的网络状态查看工具,大部分Linux发行版都默认安装或者可以通过包管理器快速安装。它可以直接显示网络连接、路由表、接口统计等信息,通过指定参数可以过滤出端口相关的状态。
常用的查看端口启用的命令如下:
# 查看所有监听的端口,包含端口号和对应的进程信息 netstat -tulnp # 查看指定端口(比如8080)是否启用 netstat -tulnp | grep 8080
参数说明:
- -t:显示TCP协议的连接
- -u:显示UDP协议的连接
- -l:只显示处于监听状态的端口
- -n:以数字形式显示地址和端口号,不进行域名解析
- -p:显示占用端口的进程ID和进程名称
如果执行命令后有输出结果,说明对应端口处于启用状态,输出中的LISTEN状态就表示端口正在监听,也就是已经启用。如果没有输出,说明端口没有启用。
使用ss查看端口是否启用
ss是Linux系统中较新的网络状态查看工具,它比netstat执行速度更快,功能也更丰富,现在很多新版本的Linux发行版已经默认用ss替代了netstat。ss可以直接从内核空间获取socket信息,效率更高。
查看端口启用的常用命令如下:
# 查看所有监听的端口 ss -tulnp # 查看指定端口(比如3306)是否启用 ss -tulnp | grep 3306
ss的参数和netstat大部分是通用的,同样可以通过-t、-u、-l、-n、-p来过滤对应的端口信息。输出结果中的LISTEN状态同样表示端口已经启用,若没有对应输出则说明端口未启用。
使用lsof查看端口是否启用
lsof是列出当前系统打开文件的工具,在Linux中一切皆文件,网络连接也属于文件范畴,因此可以通过lsof来查看端口的占用情况。
查看指定端口是否启用的命令如下:
# 查看TCP协议8080端口是否启用 lsof -i:8080 # 查看UDP协议53端口是否启用 lsof -iUDP:53
参数说明:
- -i:指定查看网络相关的文件,后面可以跟端口号或者协议类型
如果执行命令后有输出,说明端口已经被某个进程占用,也就是处于启用状态,输出中会显示占用端口的进程名称、进程ID等信息。如果没有输出,说明端口没有启用。
三种工具的对比
为了更清晰地了解三个工具的特点,我们可以通过表格进行对比:
| 工具名称 | 执行速度 | 默认安装情况 | 适用场景 |
|---|---|---|---|
| netstat | 较慢 | 部分旧版本默认安装 | 习惯使用传统工具,需要兼容旧系统 |
| ss | 快 | 大部分新版本默认安装 | 新系统,需要快速获取端口状态 |
| lsof | 中等 | 大部分系统默认安装 | 需要同时查看端口和对应打开的文件信息 |
注意事项
使用上述命令查看端口状态时,如果没有输出结果,可能是当前用户权限不足,无法查看其他用户启动的进程占用的端口,此时可以在命令前加上sudo获取管理员权限后再次执行。
另外,端口启用状态分为监听状态和已建立连接状态,上述命令中的-l参数只会显示监听状态的端口,如果需要查看所有状态的端口,可以去掉-l参数,此时输出中的ESTABLISHED状态表示端口已经和客户端建立了连接,同样属于启用状态。