netstat 与它的替代者
netstat 属于 net-tools,用来查看连接、监听端口、路由表与协议栈统计,是老系统与老脚本里的标准工具。它已经停止维护,新系统上建议逐步迁移到 ss 与 ip:ss 在大连接数场景下明显更快,也能展示新内核才有的 socket 细节。理清两者的对应关系,是接手老脚本时最实用的一项准备。
基本信息
| 适用平台 | Linux(net-tools 包,很多最小化系统已不预装) |
|---|---|
| 常用选项 | -tulnp 监听端口与进程、-an 全部连接、-s 协议栈统计、-rn 路由表、-i 接口统计 |
| 现代替代 | ss -lntp、ss -s、nstat、ip route、ip -s link |
| 性能特点 | 线性扫描 /proc,连接数多时明显变慢 |
| 权限要求 | 显示进程需要 root |
典型使用场景
- 接手老脚本时读懂 netstat 的用法与输出
- 老系统上没有 ss 时完成端口与连接排查
- 核对监听端口与对应进程
- 快速查看协议栈统计(重传、丢弃、错误)
- 为逐步迁移把老命令映射到新命令
常用示例与替代写法
常用示例与替代写法
netstat -tulnp # 监听端口与对应进程(需 root 才显示进程)
netstat -an | grep ':80' | head # 全部连接中筛选某端口
netstat -s | head -n 30 # 协议栈统计:重传、丢弃、错误
netstat -rn # 路由表
netstat -i # 接口统计
# 现代替代:
ss -lntp # 等价 netstat -tulnp,且更快
ss -s # 连接数概览
ip route # 等价 netstat -rn
ip -s link # 等价 netstat -i老命令到新命令的映射
| netstat 用法 | 现代等价 | 差异 |
|---|---|---|
| netstat -tulnp | ss -lntp | ss 更快,socket 细节更全 |
| netstat -an | ss -a | 连接数大时 ss 的性能优势明显 |
| netstat -s | ss -s 或 nstat | nstat 的协议栈计数更细 |
| netstat -rn | ip route | 输出格式不同,脚本要跟着改 |
| netstat -i | ip -s link | 统计字段更丰富 |
| 总体建议 | 新脚本直接用 ss 与 ip | 避免依赖已停维护的工具集 |
很多最小化系统已不预装 net-tools:迁移老脚本前先在目标系统确认命令是否存在,再决定是补装兼容包还是改写脚本,能避免上线时才踩坑。
netstat 在大连接数机器上会明显变慢(需要线性扫描 /proc):线上高负载排查优先用 ss,避免为了看一个端口把机器拖得更慢。
想看连接数的趋势而非瞬时快照:把 ss -s 的输出定期写入日志或交给监控采集,单次执行只能回答此刻状态,趋势才能判断增长是否异常。