netstat 的现状
netstat 属于 net-tools 套件,是老一代 Linux 网络状态查看工具,能看连接、监听端口、路由表与协议统计。新发行版已不再默认安装它,推荐使用 ss、ip 等新工具,它们直接读取内核接口,连接量大时明显更快。但大量既有脚本与文档仍以 netstat 写成,读懂并把它们迁移到新工具是维护老系统时的常见需求。
基本信息
| 适用平台 | 老 Linux 系统自带;新发行版需额外安装 net-tools |
|---|---|
| 语法 | netstat [选项] |
| 现代替代 | ss 看连接、ip route 看路由、ip 命令看接口 |
| 性能差异 | 连接数大时需要遍历大量信息,明显慢于 ss |
典型使用场景
- 在当前系统没有安装新工具时做基础排查
- 阅读与迁移既有运维脚本中的命令
- 确认某端口是否处于监听状态以及由哪个进程占用
- 统计已建立连接数量做粗略巡检
- 查看协议层统计中的重传与错误计数
常用示例
常用示例
netstat -tlnp # 监听端口与进程(同 ss -tlnp)
netstat -an | grep ESTAB | wc -l # 粗略统计已建立连接数
netstat -s | head -20 # 协议统计:重传、错误、丢弃
netstat -rn # 路由表(同 ip route)
netstat -i # 接口收发统计
ss -tlnp # 新系统的推荐替代
ip route show # 路由的新写法新旧命令对照
| 用途 | netstat 写法 | 现代写法 |
|---|---|---|
| 监听端口 | netstat -tlnp | ss -tlnp |
| 全部连接 | netstat -an | ss -an |
| 协议统计 | netstat -s | ss -s 与 nstat |
| 路由表 | netstat -rn | ip route show |
| 接口信息 | netstat -i | ip -s link |
新旧工具的统计口径不完全一致:协议计数器通常是累计值,判断「是不是最近在恶化」要看两次采样的差值,而不是绝对数字。
迁移建议
- 先把脚本里的调用逐个替换成新工具,并在输出格式上做适配
- 新工具的输出列更规整,更适合用字段解析而不是按位截取
- 保留一段时间的双跑校验,确认新写法得到的信息与旧写法一致
- 在文档与手册里同步更新命令示例,避免新人继续复制旧写法
- 确实需要旧工具时再安装,别在新系统上默认依赖它
解析输出时避免按固定列宽裁剪,不同版本的列间距会变;优先按关键字过滤,或直接改用结构化输出更可靠的工具。