在 Linux 运维排障中,netstat 是一个经典网络工具。它可以查看端口监听状态、网络连接、路由表和网卡统计信息,常用于排查“端口占用”“服务连不上”“连接异常过多”等问题。
一、netstat 是什么?
netstat(network statistics)用于查看系统网络状态,包括:
注意:很多新系统推荐用 ss 替代 netstat,但 netstat 仍非常常见,尤其在老环境和面试场景中。
二、常见语法
常用参数速查:
-n:以数字形式显示地址和端口(不做 DNS 解析)-p:显示 PID/程序名(通常需要 root 权限)-s:显示各协议统计信息(TCP/UDP/ICMP 等)
常见组合:
三、最常用命令组合
1. 查看所有连接(TCP/UDP)
2. 查看监听端口
3. 查看监听端口并显示进程
-p:显示 PID/程序名(通常需要 root 权限)
4. 查看 UDP 监听
5. 查看路由表
四、输出字段速查(连接类)
常见输出列:
PID/Program name:进程 ID/进程名(带 -p 时)
五、TCP 状态常见值
排障经验:
CLOSE_WAIT 堆积:常见于应用未正确关闭 socketSYN_RECV 异常多:可能连接洪泛或服务处理慢
六、实战示例
1. 查 80 端口是否被占用
sudo netstat -lntp | grep ':80'
2. 查某进程相关连接
sudo netstat -antp | grep nginx
3. 统计各 TCP 状态数量
netstat -ant | awk '{print $NF}' | sort | uniq -c | sort -nr
4. 只看已建立连接
netstat -ant | grep ESTABLISHED
5. 排查可疑高频远端 IP
netstat -ant | awk '/ESTABLISHED/{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
七、netstat 与 ss 的区别
常见替代:
八、常见问题与建议
看不到进程名怎么办?使用 sudo 执行并加 -p 参数。
结果里很多域名解析影响查看?加 -n,直接显示 IP/端口。
端口明明监听了却访问失败?继续检查防火墙(iptables/firewalld)、安全组、服务绑定地址(0.0.0.0 或 127.0.0.1)。
九、总结
建议优先掌握这 3 条:
sudo netstat -lntpnetstat -antnetstat -rn
这三条基本可以覆盖端口监听、连接状态、路由路径三类核心网络排障场景。