如何在 Linux 中查看所有活动的网络连接?
在 Linux 中查看所有活动网络连接最稳妥的方式是优先使用ss命令若系统较旧则使用netstat。两者均需配合sudo权限才能看到完整的进程信息。注意区分“监听端口”与“已建立连接”根据排查目标选择参数。先说结论日常运维建议优先使用ss -tunap查看全量连接兼容性场景下使用sudo netstat -tunap。重点在于理解参数含义而非死记命令。适合需要排查端口占用、检查服务监听状态或分析网络连接数的场景先看命令是否可用若提示 not found 需安装 net-tools 或 iproute2 包建议始终加上-n参数避免 DNS 解析延迟加上-p参数查看进程归属加上-a确保包含监听与已建立状态命令速用版以下命令可直接复制执行根据系统环境二选一即可现代系统推荐CentOS 7/Ubuntu 18.04sudo ss -tunap传统系统兼容旧版 Linuxsudo netstat -tunap仅查看已建立连接ESTABLISHEDsudo ss -tunap | grep ESTABLISHED仅查看监听端口LISTENsudo ss -tunlp常用参数组合速查理解参数含义能更灵活地应对不同排查场景-t仅显示 TCP 连接-u仅显示 UDP 连接-n不解析服务名称显示端口号而非 http/ssh 等加快速度-a显示所有 socket包含监听 LISTEN 和已建立 ESTABLISHED-l仅显示监听 socket配合 -a 可覆盖更全但单独使用仅看监听-p显示进程名和 PID需 sudo注意标题所述“所有活动连接”通常指包含监听和已建立状态因此推荐使用-a而非-l。监听状态与已建立状态的区别Linux 网络通信基于 Socket 机制。查看连接时需区分两种主要状态LISTEN监听服务正在等待连接请求如 Web 服务器等待用户访问。ESTABLISHED已建立双方正在通信中如用户已连接到 Web 服务器。ss直接利用内核接口获取信息速度更快且资源占用更低netstat属于 net-tools 套件维护频率较低。若不加-a参数部分命令默认可能只显示已建立连接而忽略监听端口导致排查遗漏。分步处理第一步确认命令可用性在终端输入ss或netstat。若提示command not found说明未安装对应工具包。第二步安装缺失工具如需若netstat不可用根据系统类型安装CentOS/RHELsudo yum install -y net-toolsUbuntu/Debiansudo apt install -y net-tools第三步执行查看命令使用sudo提权执行查看命令。不加sudo可能导致无法看到进程名称和 PID只显示-第四步过滤关键信息若连接数过多配合grep过滤特定端口或状态例如grep ESTABLISHED只看已建立连接。怎么验证是否生效执行命令后观察输出列是否包含Process或PID/Program name信息。若该列显示具体进程名如nginx、ssh及数字 PID说明权限充足且命令生效。若该列为空或显示-请检查是否遗漏sudo。此外可打开一个新终端启动一个测试服务如python3 -m http.server 8000再次运行查看命令确认能否看到该端口被监听。常见坑1. 权限不足导致信息缺失普通用户运行命令无法查看其他用户的进程信息务必加上sudo。2. DNS 解析导致卡顿若不加-n参数命令会尝试将 IP 解析为域名在网络配置不当时会长时间卡顿务必加上-n。3. 忽略 IPv6 监听有些服务仅监听 IPv6显示为:::或[::]排查问题时不要只看 IPv4 地址。4. 状态理解偏差LISTEN表示服务正在等待连接ESTABLISHED表示正在通信TIME_WAIT表示连接正在关闭不同状态代表不同含义勿将监听端口误认为异常连接。来源 https://www.zjcp.cc/ask/10838.html