029 netstat命令

命令说明

netstat 用于查看网络连接、监听端口、路由表与接口统计,是排查端口占用、连接状态(TIME_WAIT/CLOSE_WAIT)的常用工具。较新系统建议用 ss 替代。

语法

netstat [选项]

常用参数

参数说明
-t只显示 TCP 连接
-u只显示 UDP 连接
-l只显示监听(LISTEN)中的端口
-a显示所有连接与监听端口
-n以数字显示地址与端口,不做 DNS/服务名解析(更快)
-p显示占用端口的进程 PID/程序名(需 root)
-r显示路由表(等价于 route -n)
-i显示网络接口统计
-s按协议显示统计信息

使用示例

$ netstat -tunlp

查看所有 TCP/UDP 监听端口及进程(最常用组合)

$ netstat -an | grep 8080

查看 8080 端口的所有连接

$ netstat -tlnp | grep :443

查看 443 端口由哪个进程监听

$ netstat -rn

查看路由表

$ netstat -i

查看网卡收发统计

$ netstat -s

查看 TCP/IP 协议统计

$ netstat -an | grep -c TIME_WAIT

统计 TIME_WAIT 连接数

实用技巧

  • 常用组合记忆:-tlnp 看 TCP 监听端口与进程;-unlp 看 UDP。
  • netstat 已逐步被 iproute2 的 ss 取代:ss -tunlp 等价且更快,建议新环境直接用 ss。
  • 查端口被谁占用:netstat -tlnp | grep :端口 或 ss -tlnp | grep :端口。
  • 大量 TIME_WAIT/CLOSE_WAIT 通常意味着连接未正确关闭,可结合业务排查 keepalive 与超时。
  • -p 需要 root 才能看到全部进程名。