UOS怎样查看系统开启了哪些端口

作者:袖梨 2026-07-18
统信UOS中端口被占用可导致服务部署失败或连接被拒绝,应使用ss(默认内置、高效)、netstat(需sudo和net-tools、显示PID及路径)、lsof(按端口号反查进程详情)、/proc文件系统(手动验证底层监听)和nc(验证端口真实响应)五种方法排查。

您在统信UOS上部署服务失败、连接被拒绝,或想确认系统当前有哪些端口正对外提供服务,就需要查看系统实际开启并监听的端口。这些端口可能由后台服务、开发调试进程或残留程序绑定,仅靠服务状态检查无法覆盖全部情况。

用ss命令快速列出所有监听端口

ss是UOS默认内置的高性能工具,不依赖额外安装,输出精简且实时性高,比netstat更快更可靠。

执行命令:sudo ss -tuln

这一步直接显示所有TCP和UDP协议中处于LISTEN状态的端口,不解析主机名和服务名,避免DNS延迟干扰判断。

若输出为空,说明当前没有任何进程主动监听网络端口;若看到Local Address列含0.0.0.0:*或[::]:*,表示该端口对所有IPv4/IPv6地址开放;含127.0.0.1:*则仅限本机访问。

用netstat查端口并关联到具体进程

当您需要知道哪个程序占用了某个端口时,netstat能直接给出PID和可执行路径,但需先确保net-tools已安装。

第一步:检查是否已安装netstat工具,运行 netstat --version;如提示command not found,则执行 sudo apt install net-tools -y

第二步:获取完整监听列表及进程路径:sudo netstat -tulnp

第三步:定位特定端口,例如检查8080是否被占用:sudo netstat -tulnp | grep ':8080'

【注意:必须加sudo,否则无法读取其他用户进程的路径信息,导致PID/Program name列为空或显示“-”】

用lsof按端口号反查进程详情

lsof将端口视为“打开的文件”,输入端口号就能直接返回进程名、用户、启动命令、工作目录等上下文,无需先查PID再二次验证。

方法一:查指定端口,如3306:sudo lsof -i :3306

方法二:列出全部TCP监听进程:sudo lsof -i -sTCP:LISTEN

若提示lsof未找到,运行 sudo apt install lsof -y 安装即可。

手动验证异常进程的真实监听行为

当ss、netstat或lsof因权限限制或进程异常(如僵尸态、内核模块冲突)无法显示某进程的监听状态时,可通过/proc文件系统底层确认。

第一步:通过服务名获取疑似进程PID,例如查找nginx:pidof nginx

第二步:进入其文件描述符目录筛选socket:sudo ls -l /proc/[PID]/fd/ | grep socket(把[PID]替换成实际数字)

第三步:读取TCP监听表并比对端口号:sudo cat /proc/[PID]/net/tcp

十六进制端口号以大端序显示,例如0000:01BB对应十进制443——【务必注意字节序转换,否则会误判】

用nc验证端口是否真实响应

nc不依赖进程信息,只测试网络层连通性与端口响应能力,能发现防火墙拦截、服务崩溃但进程残留、或监听地址绑定错误等问题。

本地测试端口631是否可连:nc -zv 127.0.0.1 631

远程测试域名80端口:nc -zv example.com 80

返回“Connection refused”说明端口未监听或被防火墙阻断;“Succeeded!”表示端口开放且有服务响应。

相关文章

精彩推荐