题目
如何查看Linux系统中正在监听的网络端口?
信息
- 类型:问答
- 难度:⭐
考点
网络管理, netstat命令, ss命令, 端口监听
快速回答
在Linux中查看监听端口的常用方法:
- 使用
netstat -tuln命令 - 使用更高效的
ss -tuln命令 - 通过
grep LISTEN过滤监听状态
原理说明
Linux系统中,服务进程通过绑定端口提供网络服务。监听端口(LISTEN)表示该端口正在等待客户端连接。查看这些端口是系统管理的基础操作,涉及网络配置和故障排查。
命令使用示例
1. netstat 命令(传统工具)
# 查看所有TCP/UDP监听端口
netstat -tuln | grep LISTEN
# 输出示例:
# tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
# tcp6 0 0 :::80 :::* LISTEN- -t:显示TCP端口
- -u:显示UDP端口
- -l:仅显示监听端口
- -n:禁用域名解析(加快速度)
2. ss 命令(推荐替代方案)
# 查看所有TCP/UDP监听端口
ss -tuln | grep LISTEN
# 输出示例:
# tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
# tcp LISTEN 0 128 [::]:80 [::]:*- ss 比 netstat 更快更高效(直接读取内核信息)
- 参数含义与 netstat 一致
最佳实践
- 优先使用 ss 命令:性能更好,新系统默认安装
- 组合过滤:
ss -tln仅查看TCP监听(省略UDP) - 查看进程:
sudo ss -tulnp显示占用端口的进程ID(需root权限)
常见错误
- ❌ 忘记
-n参数:导致反向域名解析,降低速度 - ❌ 混淆
-t和-u:TCP和UDP端口需分开查看 - ❌ 权限不足:查看进程信息需要
sudo
扩展知识
- 端口状态含义:
LISTEN(监听) / ESTABLISHED(已连接) / TIME_WAIT(等待关闭) - 相关文件:
/etc/services记录端口与服务的映射关系 - 防火墙影响:
即使服务监听端口,防火墙规则可能阻止访问 - 替代工具:
lsof -i -P -n | grep LISTEN也可查看监听端口