本期摘要netstat是网络连接查看的经典命令尽管新一代ss性能更快但netstat仍然是最普及、最直观的网络排查工具。本文聚焦五个核心场景列出所有监听端口找服务有没有起来、统计每个状态的连接数看TIME_WAIT是否爆炸、按 IP 统计连接数是不是被某个IP扫、根据端口号找进程哪个进程占用了端口、查看路由表。同时解释了 LISTEN / ESTABLISHED / TIME_WAIT / CLOSE_WAIT 四个最常见状态的业务含义读完你就能在收到网络告警时快速定位原因。netstat是什么netstat是 network statistics 的缩写用于显示网络连接、路由表、接口统计等信息。虽然很多教程已经开始转向ss但netstat仍然是最广泛存在的工具尤其是在老系统和临时排查环境中。netstat可能未预装可用yum install net-tools或apt install net-tools安装。最常用的5种姿势1. 列出所有监听端口找服务bashnetstat -tulnp参数含义-tTCP-uUDP-l仅显示监听状态的端口-n不解析名字显示 IP 和端口号-p显示进程 PID 和名称输出示例textProto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 567/sshd tcp6 0 0 :::3306 :::* LISTEN 890/mysqld解读0.0.0.0:*表示监听所有 IPv4 地址:::*表示监听所有 IPv6 地址127.0.0.1:3306表示只监听本机外部无法访问2. 统计各状态的连接数bashnetstat -an | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}输出类似textESTABLISHED 234 TIME_WAIT 1890 CLOSE_WAIT 12 LISTEN 8各状态业务含义状态对程序员/运维的意义LISTEN服务在等请求——正常ESTABLISHED正常通信连接TIME_WAIT主动关闭一方留下的大量出现表示短连接频繁CLOSE_WAIT被动关闭方未调用 close说明程序有 bug——连接泄漏SYN_RECV收到 SYN 但连接未建立可能受到 SYN Flood 攻击3. 按 IP 统计连接数抓坏蛋bashnetstat -an | grep ESTABLISHED | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -rn输出类似text245 1.2.3.4 128 5.6.7.8 12 10.0.0.1某个 IP 连接数异常高 → 可能是爬虫、攻击或程序错误重连。4. 查看某个端口上的连接bashnetstat -an | grep :80805. 根据端口号找进程bashnetstat -tulnp | grep :80-p需要 root 权限才能看到完整进程名。进阶技巧实时刷新类似 topbashwatch -n 1 netstat -an | grep ESTABLISHED | wc -l每秒刷新一次观察连接数变化。查看路由表bashnetstat -rn输出网关信息排查网络不通问题时很有用。查看接口统计丢包、错误bashnetstat -iRX-ERR/TX-ERR列有非零值表示网卡有错误。真实场景场景1服务启动失败检查端口是否被占bashnetstat -tulnp | grep :8080如果被占用kill掉占用的进程或换端口。场景2TIME_WAIT 过多TIME_WAIT 太多会耗尽端口排查方法netstat -an | grep TIME_WAIT | wc -l统计数量超过 1 万需要优化开启tcp_tw_reuse或改用长连接场景3CLOSE_WAIT 泄漏bashnetstat -an | grep CLOSE_WAIT | wc -l如果这个值持续增长且不降说明程序没有正确关闭连接——最经典的连接泄漏表现。场景4某个 IP 在扫你的端口bashnetstat -an | grep SYN_RECV | wc -l若 SYN_RECV 数量很大可能遭受 SYN Flood。配合netstat -an | grep SYN_RECV | awk {print $5} | cut -d: -f1 | uniq -c找到攻击源 IP。备选方案ss对比ss是netstat的现代替代品速度更快输出更清晰。功能netstatss监听端口netstat -tulnpss -tulnp连接统计netstat -an awkss -tan state time-wait等按进程筛选-p参数-p参数同样支持ss的优势在于可以对状态直接过滤ss -tan state time-wait直接列出所有 TIME_WAIT。但在老系统或容器环境中netstat往往更通用。常用参数速查参数含义-tTCP-uUDP-l仅监听-a所有连接包含监听-n不解析名字显示数字 IP-p显示 PID/进程名-c连续输出-r路由表-i网络接口统计下期预告《每日一命令17ss——比netstat快10倍的新一代工具》