返回资讯中心
外部精选
软件工程
#开发者实时流

Linux 弃用 ifconfig、nslookup、netstat,改用 ip、dig、ss

来源标题:Linux deprecated commands that I need to stop using

Linux 正在弃用 ifconfig、nslookup、netstat 等旧命令,替代者分别是 ip、dig 和 ss。文章以 netstat 与 ss 为例列出命令对照,指出 ss 开发者 Michael Prokop 让部分选项用法与 netstat 相近,便于过渡。netstat 的部分功能也已由 ip 接管。

Hacker News 最新sleepytimetea2026/11/3 · 今天17 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

返回所有文章 如果你和我一样,仍然固守着即将被弃用的命令,比如 ifconfig、nslookup 和 netstat。它们的新替代品分别是 ip、dig 和 ss。是时候(不情愿地)放下这些旧工具,用 ss 走向未来了。ip 命令在这里值得一提,因为 netstat 的部分功能已被 ip 取代。本文介绍了 ss 命令的核心要点,这样你就不必自己去“dig”(双关语,无意冒犯)了。 正式来说,ss 是 socket statistics 命令,用于替代 netstat。在本文中,我提供了 netstat 命令及其对应的 ss 替代写法。ss 的开发者 Michale Prokop 让 netstat 的部分选项在 ss 中以几乎相同的方式运作,使我们从 netstat 迁移到 ss 变得很容易。 例如,要显示 TCP socket,使用 -t 选项: $ netstat -t Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 rhel8:ssh khess-mac:62036 ESTABLISHED $ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.1.65:ssh 192.168.1.94:62036 可以看到,两者给出的信息本质上相同,但要更好地模仿 netstat 命令的显示效果,请使用 -r(resolve)选项: $ ss -tr State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 rhel8:ssh khess-mac:62036 而要查看端口号而非其解析后的名称,请使用 -n 选项: $ ss -ntr State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 rhel8:22 khess-mac:62036 netstat 和 ss 并非必须 100% 一致,但这确实让迁移更容易一些。所以,在翻 man 手册或上网找答案之前,先试试你常用的 netstat 选项,结果可能会让你惊喜。 例如,带老牌常用选项 -an 的 netstat 命令会产生可比较的结果(内容太长,此处无法完整展示): $ netstat -an |grep LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN unix 2 [ ACC ] STREAM LISTENING 28165 /run/user/0/systemd/private unix 2 [ ACC ] STREAM LISTENING 20942 /var/lib/sss/pipes/private/sbus-dp_implicit_files.642 unix 2 [ ACC ] STREAM LISTENING 28174 /run/user/0/bus unix 2 [ ACC ] STREAM LISTENING 20241 /var/run/lsm/ipc/simc <truncated> $ ss -an |grep LISTEN u_str LISTEN 0 128 /run/user/0/systemd/private 28165 * 0 u_str LISTEN 0 128 /var/lib/sss/pipes/private/sbus-dp_implicit_files.642 20942 * 0 u_str LISTEN 0 128 /run/user/0/bus 28174 * 0 u_str LISTEN 0 5 /var/run/lsm/ipc/simc 20241 * 0 <truncated> TCP 条目在 ss 命令的输出中位于末尾,而在 netstat 的输出中位于开头。因此,尽管显示的信息实际上相同,布局却存在差异。 如果你想知道哪些 netstat 命令已被 ip 命令取代,这里有一个例子: $ netstat -g IPv6/IPv4 Group Memberships Interface RefCnt Group


lo 1 all-systems.mcast.net enp0s3 1 all-systems.mcast.net lo 1 ff02::1 lo 1 ff01::1 enp0s3 1 ff02::1:ffa6:ab3e enp0s3 1 ff02::1:ff8d:912c enp0s3 1 ff02::1 enp0s3 1 ff01::1 $ ip maddr 1: lo inet 224.0.0.1 inet6 ff02::1 inet6 ff01::1 2: enp0s3 link 01:00:5e:00:00:01 link 33:33:00:00:00:01 link 33:33:ff:8d:91:2c link 33:33:ff:a6:ab:3e inet 224.0.0.1 inet6 ff02::1:ffa6:ab3e inet6 ff02::1:ff8d:912c inet6 ff02::1 inet6 ff01::1 ss 命令并不完美(抱歉,Michael)。事实上,ss 有一个明显的缺陷。你可以自己试试下面这个,对比两者: $ netstat -s Ip: Forwarding: 2 6231 total packets received 2 with invalid addresses 0 forwarded 0 incoming packets discarded 3104 incoming packets delivered 2011 requests sent out 243 dropped because of missing route <truncated> $ ss -s Total: 182 TCP: 3 (estab 1, closed 0, orphaned 0, timewait 0) Transport Total IP IPv6 RAW 1 0 1 UDP 3 2 1 TCP 3 2 1 INET 7 4 3 FRAG 0 0 0 如果你弄清楚了如何用 ss 显示相同的信息,请告诉我。 也许随着 ss 的演进,它会包含更多功能。我想 Michael 或其他人随时可以查看 netstat 命令来从中获取那些统计数据。对我来说,我更喜欢 netstat,我不太确定为什么它会被弃用以支持 ss。几乎在所有情况下,ss 的输出都不如 netstat 那样便于人阅读。 你怎么看?ss 凭什么比 netstat 更好?我想我对其他 net-tools 工具也可以提出同样的问题。我并不觉得它们有什么问题。在我看来,除非你是在显著改进一个现有工具,否则何必费心去弃用另一个呢? 好了,以上就是 ss 命令的简要介绍。随着 netstat 逐渐淡出人们的视野,我相信我最终会接受 ss 作为它的继任者。 想了解更多网络主题?查看 Linux 网络速查表。 Ken 自 1996 年起使用 Red Hat Linux,撰写过电子书、白皮书、实体书、数千道考试复习题,以及数百篇关于开源和其他主题的文章。Ken 还拥有 20 多年的企业系统管理员经验,涉及 Unix、Linux、Windows 和虚拟化。 在 Twitter 上关注他:@kenhess,获取系统管理员话题、电影和随想吐槽的持续更新。 晚上,当 Ken 把红帽换成锡箔帽之后,他会写作和拍电影,成功和认可程度各不相同。他是一位获奖电影人,不断试图让所有人相信他的“文艺复兴人”身份,同样成功和认可程度各不相同。 更多来自该作者 在此输入关键词搜索博客 UI_Icon-Red_Hat-Close-A-Black-RGB 搜索 更多类似内容 博客文章 可信 AI 始于社区治理 博客文章 宣布 Fedora 45 原创播客 智能体 AI 能修补互联网吗? 原创播客 自动化的随机行为 | 编译器 按频道浏览 探索所有频道 自动化 IT 自动化技术、团队和环境的最新动态

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →