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 才能看到全部进程名。