推荐优先使用 ss 查看进程与网络连接关联,因其更快更现代;netstat 已废弃,仅作兼容备用。ss 需 sudo ss -tulnp 查监听端口及进程,-p 要 root 权限;netstat 用 sudo netstat -tulnp 等效,但性能较差。

netstat 和 ss 都能查看进程与网络连接的关联关系,但 ss 更快、更现代,推荐优先使用;netstat 已被标记为废弃(部分发行版默认不安装),仅在需兼容旧脚本或排查特定字段时参考。
用 ss 查看进程绑定的网络连接
ss 默认不显示进程信息,需加 -tuln(TCP/UDP 监听 + 数字格式)再配合 -p(需 root 权限):
- sudo ss -tulnp:列出所有监听端口及对应进程(PID 和程序名)
- sudo ss -tunp src :80:筛选本地监听 80 端口的连接及进程
- sudo ss -tunp dst 192.168.1.100:22:查看与指定目标建立的 TCP 连接及所属进程
注意:-p 必须以 root 或具备 CAP_NET_ADMIN 权限运行,否则提示 “Permission denied”;输出中 “users:(())” 字段即为进程信息,格式如 (\"nginx\",pid=1234,fd=6)。
用 netstat 查看进程网络连接(兼容性方案)
若系统仍提供 netstat(通常来自 net-tools 包),常用组合为:
- sudo netstat -tulnp:等效于 ss -tulnp,显示监听状态+进程
- sudo netstat -anp | grep :3306:快速定位 MySQL(默认 3306)相关连接和进程
- sudo netstat -tup | grep ESTABLISHED:查看所有已建立的 TCP 连接及其进程
netstat 输出列含义清晰(Proto、Recv-Q、Send-Q、Local Address、Foreign Address、State、PID/Program name),适合初学者理解连接状态,但性能低于 ss,高并发场景可能卡顿或超时。
常见问题与排查技巧
- 找不到进程名? 多数因权限不足——务必加 sudo;也可尝试 sudo lsof -i -P -n 作为补充工具
- 看到 PID 但不知是哪个服务? 执行 ps -p PID -o pid,comm,args 查看完整命令行
- 端口被占用但没显示进程? 可能是内核模块(如 iptables REDIRECT)、容器网络或未绑定到具体 IP 的监听(检查 Local Address 是否为 *:端口 或 127.0.0.1:端口)
- ss 显示 users:(()) 为空? 表示该 socket 无用户态进程关联(如内核态 socket、已退出但连接未关闭的残留)
小结:选 ss,配 sudo,辅以 ps/lsof
日常运维优先用 sudo ss -tulnp 快速定位监听服务;遇到异常连接时,结合 ps 或 lsof 追查进程细节;netstat 仅作备选,不建议新环境依赖。工具本身不复杂,关键是权限意识和对输出字段的理解。


















