最有效的方式是用 ss 命令配合 -p 参数并加 sudo 权限,因进程归属信息受内核保护;ss 是现代 linux 首选工具,可查监听端口(sudo ss -tulnp)、已建立连接(sudo ss -tunp state established)、指定端口或进程;netstat 为兼容方案,需安装 net-tools;lsof 可辅助验证,如 sudo lsof -i :3306;常见问题包括未加 sudo 导致无进程名、socket 属于内核模块或绑定在本地地址。

直接看进程绑定了哪些网络连接,最有效的方式是用 ss 命令配合 -p 参数,加上 sudo 权限——因为进程归属信息受内核保护,普通用户看不到。
用 ss 查看进程的网络连接
ss 是现代 Linux 系统的首选工具,速度快、信息准,直接读取内核 socket 数据:
-
查看所有监听端口及对应进程:运行
sudo ss -tulnp,输出中users:((“程序名”,pid=xxx,fd=xx))就是关键信息 -
查看已建立的 TCP 连接和所属进程:执行
sudo ss -tunp state established -
查某个端口被哪个进程占用:比如查 80 端口,用
sudo ss -tunlp | grep ':80' -
查某进程(如 nginx)的所有网络连接:
sudo ss -tunp | grep nginx
用 netstat 作为兼容方案
如果系统较老或脚本依赖 netstat,它也能完成类似任务,但性能稍差、部分新版发行版默认不装:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 安装(如缺失):
sudo apt install net-tools(Debian/Ubuntu)或sudo yum install net-tools(RHEL/CentOS) - 等效命令:
sudo netstat -tulnp查监听 + 进程;sudo netstat -tunp | grep ESTABLISHED查活跃连接 - 注意:不加 sudo 时,PID/Program name 列会显示为
-,无法定位进程
用 lsof 辅助验证
当 ss 或 netstat 结果存疑(比如看到端口却找不到进程),lsof 可交叉验证:
-
sudo lsof -i -P -n -sTCP:LISTEN查所有 TCP 监听端口及进程 -
sudo lsof -i :3306快速定位 MySQL 默认端口的持有者 - 优势在于它基于文件描述符视角,对容器、systemd 服务等场景有时比 ss 更直观
常见问题处理
看到端口但没进程名?多半是权限或绑定方式问题:
- 确认用了 sudo,否则 -p 参数无效
- 若输出中
users:(())为空,说明该 socket 属于内核模块(如 iptables REDIRECT)、已退出但连接未关闭,或监听在127.0.0.1或::1上而你查的是公网地址 - 查到 PID 后想确认具体服务:运行
ps -p PID -o pid,comm,args看完整启动命令










