Linux如何查看监听端口?
- Linux
- 2025-07-06
- 5
使用 netstat 命令(经典工具)
netstat 是传统网络工具,适合大多数Linux发行版(需安装 net-tools 包):
# 安装net-tools(如未预装) sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS/RHEL # 查看所有监听端口(IPv4和IPv6) netstat -tuln # 参数说明: # -t : TCP协议 # -u : UDP协议 # -l : 仅显示监听状态 # -n : 以数字形式显示端口(不解析服务名) # -p : 显示进程名(需sudo权限)
输出示例:

使用 ss 命令(推荐,更高效)
ss(Socket Statistics)是 netstat 的现代替代品,性能更强,预装于多数新系统:
# 查看所有TCP/UDP监听端口 ss -tuln # 高级用法: ss -tuln sport = :80 # 监听80端口的连接 ss -tuln state listening # 明确过滤监听状态
使用 lsof 命令(查看进程关联)
lsof 列出被进程打开的文件(包括网络套接字):

# 安装lsof(如未预装) sudo apt install lsof # Debian/Ubuntu sudo yum install lsof # CentOS/RHEL # 查看所有监听端口 sudo lsof -i -P -n | grep LISTEN # 参数说明: # -i : 显示网络连接 # -P : 禁用端口服务名解析(显示数字端口) # -n : 禁用主机名解析(显示IP)
通过 /proc 文件系统(底层查看)
Linux 内核通过 /proc/net 暴露网络信息:

# 查看TCP监听 cat /proc/net/tcp | awk '{$2=$3=""; print $0}' | grep "0A" # 0A=LISTEN状态(十六进制) # 查看UDP监听 cat /proc/net/udp
需转换端口:0016 → 十进制22(SSH端口)。
防火墙工具辅助查看
若防火墙(如 iptables 或 firewalld)启用,可能影响实际可访问性:
# 检查防火墙规则 sudo iptables -L -n -v # iptables sudo firewall-cmd --list-all # firewalld(CentOS/RHEL)
使用场景建议
- 快速检查:优先用 ss -tuln(速度快,无需安装)。
- 进程关联:用 lsof 或 netstat -tulnp 定位程序路径。
- 脚本处理:ss 或 /proc 输出更易解析。
- 兼容旧系统:netstat 作为备选。
安全注意事项
- 最小化监听:关闭非必要端口(如数据库端口暴露到公网)。
- 权限控制:使用 sudo 查看进程时避免泄露敏感信息。
- 定期审计:通过 cron 任务定时检查监听端口变化。
引用说明参考 Linux 官方手册(man netstat、man ss)、Red Hat 文档及网络管理最佳实践,命令测试于 Ubuntu 22.04 和 CentOS 7 环境。