在麒麟系统中排查监听端口应优先使用ss命令(如sudo ss -tuln),其次用lsof精准定位进程(如sudo lsof -i :8080),netstat则用于兼容旧脚本或查看连接队列;三者均需sudo权限以获取完整信息。

如果您在麒麟操作系统中需要确认当前系统中哪些端口正处于监听状态,以便排查服务未响应、端口冲突或安全审计问题,则必须直接读取内核网络状态或进程套接字信息——仅靠防火墙策略或服务配置文件无法反映真实监听行为。
用 ss 命令快速列出所有监听端口
ss 是银河麒麟 V10 默认预装的现代工具,解析效率高、输出简洁,且无需额外安装。
执行命令:sudo ss -tuln
这会显示所有 TCP(-t)和 UDP(-u)的监听(-l)端口,IP 和端口号以数字形式(-n)呈现,避免 DNS 解析延迟。
若需同时看到进程名和 PID,追加 -p 参数:sudo ss -tulnp;但注意:不加 sudo 时 -p 会失效,COMMAND 列将为空或显示“-”。
只查 IPv4 的监听端口可加 -4:sudo ss -4tuln,能排除 ::1 这类 IPv6 地址干扰,让结果更聚焦。
用 lsof 精准定位监听进程及其端口
当需要确认某个端口是否真被某进程独占、或怀疑存在隐蔽监听时,lsof 从文件描述符层级读取数据,可靠性高于 ss 或 netstat。
方法一:查看全部监听 TCP 端口
执行:sudo lsof -iTCP -sTCP:LISTEN -P -n
其中 -P -n 是关键参数,缺一不可——否则命令可能卡住数秒甚至超时,因它会尝试反向解析服务名和主机名。
方法二:检查指定端口(如 8080)归属
执行:sudo lsof -i :8080
输出中第二列是 PID,第三列是 COMMAND,NAME 列末尾带 (LISTEN) 即为监听者。
方法三:过滤出非特权端口(1024 以上)
执行:sudo lsof -iTCP -sTCP:LISTEN -P -n | awk '$9 ~ /:[0-9]{4,}/ {print $1, $2, $9}'
这能跳过 sshd(22)、rsyslog(514) 等系统基础服务,直击应用层端口。
用 netstat 兼容旧脚本或补全连接状态
netstat 虽非默认安装,但在需复用历史运维脚本、或要求显示详细连接队列长度(Recv-Q/Send-Q)时仍有价值。
第一步:确认是否已安装
运行 netstat -V;若提示 command not found,则执行:sudo apt-get install net-tools(麒麟桌面版 Debian 系)或 sudo yum install net-tools(麒麟服务器版 CentOS/RHEL 系)。
第二步:列出全部监听项
sudo netstat -tuln
第三步:带进程信息输出
sudo netstat -tulnp
注意:-p 参数必须配合 root 权限,否则报错“can't identify protocol”或字段为空。
第四步:单独验证某端口(如 3306)是否被 MySQL 监听
sudo netstat -tulnp | grep ':3306'
若输出行中 State 列为 LISTEN 且进程列为 mysqld,则确认服务已就绪。











