可使用netstat、ss、lsof、firewall-cmd或/proc/net/tcp_udp五种方法查看监听端口:netstat兼容性好但需安装;ss为现代高效默认工具;lsof适合精准排查;firewall-cmd仅显示放行策略;/proc/net提供原始内核数据。

如果您在银河麒麟操作系统中需要确认当前系统中哪些端口正处于监听状态,以便排查服务未响应、端口冲突或安全审计问题,则可能是由于服务未正确启动、防火墙拦截或进程异常导致。以下是查看所有正在监听的端口的具体方法:
一、使用 netstat 命令列出所有监听端口
netstat 是传统网络诊断工具,可显示当前所有处于 LISTEN 状态的 TCP 和 UDP 端口,并支持关联进程信息,适用于兼容性要求高或需快速定位服务绑定情况的场景。
1、执行命令:sudo netstat -tuln
2、若需同时显示进程名称与 PID,追加 -p 参数:sudo netstat -tulnp
3、观察输出中 State 列为 LISTEN 的行,其 Local Address 列显示绑定的 IP 与端口号(如 0.0.0.0:22 表示所有接口监听 22 端口)
4、若提示 command not found,说明 netstat 未预装,需先执行:sudo apt-get install net-tools
二、使用 ss 命令替代 netstat 获取监听端口列表
ss 是 iproute2 套件中的现代替代工具,解析内核 socket 数据更高效,输出更简洁,在高负载环境下响应更快,且默认随银河麒麟 V10 安装。
1、执行命令:sudo ss -tuln
2、如需显示进程信息,添加 -p 参数:sudo ss -tulnp
3、若提示 Permission denied(尤其在 -p 模式下),必须使用 root 权限重新运行
4、筛选仅 IPv4 监听端口可加 -4 参数:sudo ss -4tuln
三、使用 lsof 命令按端口或协议筛选监听项
lsof 能从文件描述符层级识别网络监听行为,适用于需精确匹配特定端口、协议或进程名的深度排查场景,但需单独安装。
1、安装 lsof(如未安装):sudo apt-get install lsof
2、列出全部监听 TCP 端口:sudo lsof -iTCP -sTCP:LISTEN -n -P
3、仅查看监听 UDP 端口:sudo lsof -iUDP -n -P
4、检查指定端口(如 8080)是否被监听:sudo lsof -i :8080
四、通过 firewall-cmd 查看防火墙放行的监听端口
该方法不反映实际服务监听状态,而是展示 firewalld 策略中显式允许对外访问的端口,用于验证网络可达性配置是否生效。
1、确认 firewalld 正在运行:sudo systemctl status firewalld
2、列出当前 zone(通常为 public)所有放行端口:sudo firewall-cmd --list-ports
3、查看完整策略(含服务、端口、ICMP 类型等):sudo firewall-cmd --list-all
4、注意:即使端口在 firewall-cmd 中显示已放行,若无服务实际监听,外部仍无法建立连接
五、直接读取 /proc/net/ 目录获取原始监听信息
/proc/net/tcp 与 /proc/net/udp 是内核导出的原始监听表,不含进程名,但无需额外权限即可访问,适合最小化环境或脚本自动化提取。
1、查看 TCP 监听条目(十六进制端口号):sudo cat /proc/net/tcp | awk '$4 ~ /0A000001/ {print $2}' | head -5
2、将十六进制端口转为十进制(例如 00001F90 → 8080)可使用命令:printf "%d\n" 0x00001F90
3、查看 UDP 监听项:sudo cat /proc/net/udp | tail -n +2 | awk '{print $2}'
4、该方式输出为 raw 格式,需结合 /proc/net/{tcp,udp} 头部字段说明解析 IP 与端口字段位置











