当前位置:首页>Linux>请立即停止使用这5个早已过时的Linux命令,拥抱这些好用的替代命令

请立即停止使用这5个早已过时的Linux命令,拥抱这些好用的替代命令

  • 2026-09-02 19:32:41
请立即停止使用这5个早已过时的Linux命令,拥抱这些好用的替代命令

作为一名专注Linux系统运维与前沿技术的自媒体博主,今天想和大家聊聊一个很多老鸟都在默默坚持的“坏习惯”:还在用那些已经被时代抛弃的Linux经典命令。

2026年的Linux世界早已悄然变天。主流发行版如Ubuntu 24.04+、Debian 12+、RHEL 9/10系列、Fedora、Arch等,早就把net-tools套件边缘化,把iptables推向兼容层,而iproute2家族(ip、ss、nft等)成为标配。很多运维脚本、旧文档、培训教程还在死守十年前的写法,结果在新服务器、最小化容器(distroless、Alpine)、云原生环境里直接报错“command not found”。

今天这篇文章就给大家介绍5个早已过时的Linux命令,不但告诉你“别用了”,更告诉你为什么弃用、替代命令怎么写更高效。读完这篇,你的终端效率和脚本健壮性都能上一个台阶。

1. 告别 arp,全面拥抱 ip neigh(或 ip n)

ARP(Address Resolution Protocol)协议本身没问题,但arp命令属于早已停止维护的net-tools家族。最后一次大版本更新还是2017年左右,2021年后基本只收安全补丁。现代Linux内核和用户空间工具链早就转向iproute2套件(从1999年就开始开发,至今活跃)。

arp命令的问题:

  • 输出格式老旧、不支持JSON、无颜色高亮
  • 功能单一,只能查看/操作ARP表
  • 在无net-tools的最小镜像里直接缺失

替代:ip neigh show / ip n

ip neigh(neighbor的缩写)是iproute2家族的明星命令,功能完爆arp:

# 查看ARP表(最常用)ip neigh show# 或简写ip n# 按设备过滤ip n show dev eth0# 删除某条记录ip n del 192.168.1.100 dev eth0# 彩色+更人性化输出(现代终端基本都支持)ip -c n show
ip neigh show
ip n
ip -c n show

建议大家在自己的机器上敲一遍感受差距。

很多发行版终端默认开启颜色支持,ip n的输出比arp清晰太多:IP、MAC、状态(REACHABLE/STALE/FAILED等)、设备一目了然。

迁移建议:全局搜索脚本里的arp,替换为ip n。几乎是1:1兼容,唯一要注意的是ip n的“nud”状态比arp的Flags更细粒度。

2. 永别 ifconfig,ip addr / ip link才是王道

ifconfig几乎是每个Linux入门者的第一个网络命令。但它早在2000年代末就被宣告“开发停滞”。net-tools最后一次正式发布是2014年左右,此后只打补丁。问题越积越多:

  • 不支持现代网络特性(如multiple addresses per interface、VRF、XDP等)
  • 输出格式固定、难以解析
  • IPv6支持很烂
  • 最小化镜像里压根不装

2025-2026年,几乎所有新服务器/容器镜像默认不带ifconfig。

替代:ip a / ip addr show / ip link

最常用的三个变体:

# 查看所有接口状态(最常用,等价于ifconfig -a)ip a# 或完整写法ip addr show# 只看某个接口ip a show eth0# 开启/关闭接口ip link set eth0 upip link set eth0 down# 添加/删除IP(临时)ip addr add 192.168.50.100/24 dev eth0ip addr del 192.168.50.100/24 dev eth0
ip a

ip命令的输出更现代:支持颜色、显示scope、dynamic地址、IPv6隐私扩展等。脚本友好度也高得多(配合jq可以直接解析)。

想让ip命令输出更像ifconfig的老派风格?可以用ip -4 a只看IPv4,或者写个alias:

alias ifconfig='ip -c a'

3. iptables → nftables

iptables从Linux 2.4时代统治了近20年,但内核早在2014年(3.13)就引入了nftables。2019年Debian 10把nftables设为默认,2022年RHEL 9正式标记iptables为deprecated。到2026年,主流发行版里你敲iptables,其实跑的是iptables-nft兼容层(把旧语法翻译成nft规则),性能有损耗、功能受限。

nftables优势:

  • 规则合并更高效(一个表里可以有多个链、集合、map、meter)
  • 语法更统一、代码量减少50%以上
  • 原生支持sets(IP黑白名单超快)、限速meter、动态超时等
  • 直接内核处理,无需iptables→netlink的多次跳转

快速上手nftables对比

旧iptables经典规则:

iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -j DROP

nftables等价写法(推荐写成文件 /etc/nftables.conf):

table inet filter {    chain input {        type filter hook input priority 0; policy drop;        # 允许已建立和相关连接        ct state established,related accept        # 本地环回        iif lo accept        # SSH        tcp dport 22 accept        # 其他规则...    }}

加载:nft -f /etc/nftables.conf

迁移工具:大多数发行版自带 iptables-translate / iptables-restore-translate,能把旧rules.v4直接转成nft语法。

新项目直接用nft。新手可以先用firewalld(后端默认nft),老手直接手写nft规则。iptables-nft只是过渡,未来某天兼容层可能被彻底移除。

4. which 已经落伍,type 和 command -v 才是正解

which不是内置命令,它是一个独立的二进制文件(/usr/bin/which)。每次执行都要fork一个新进程,效率低下。在脚本里尤其浪费,尤其循环调用时。

虽然还没被“正式deprecated”,但POSIX和Bash/Zsh官方强烈推荐用内置命令替代。

两大替代(都是shell builtin,零开销):

  1. type -a / type -p
# 显示命令类型和路径type python3# 只显示路径(类似which)type -p python3# 显示所有同名命令(alias、函数、builtin、外部)type -a ls
type python3
type -a ls
  1. command -v(最推荐用于脚本,可移植性最好)
# 检查是否存在,返回路径或空if command -v docker >/dev/null; then    echo "Docker installed"fi

为什么内置更好?

  • 无需创建子进程,执行速度快10-100倍
  • 能正确识别shell函数、alias、builtin
  • POSIX兼容(command -v 是标准)

脚本里一律用command -v,交互式用type更友好。which可以彻底从你的肌肉记忆里删除。

5. netstat 彻底落幕,ss 是速度与力量的化身

netstat曾经是网络状态的万金油,但它是net-tools家族成员,早就停止功能迭代。最大问题是:每次查询都要遍历/proc/net等文件,连接数多时很慢;不支持Unix socket过滤细粒度;输出难以机器解析。

替代:ss(Socket Statistics)

ss直接从内核的socket接口读取数据,速度比netstat快几倍到几十倍。常用写法几乎兼容:

# 经典netstat -altpn 等价ss -altpn# 只看监听端口ss -ltn# 查看所有TCP连接ss -t state established# 看占用443端口的远程连接ss 'dport = :443'# Unix socketss -lx
ss -altpn
ss -ltn
ss -t state established
ss 'dport = :443'
ss -lx

进阶用法

  • 看处于SYN-RECV的半连接(防SYN洪水):ss state syn-recv
  • 统计ESTABLISHED连接数:ss -t state established | wc -l
  • 按进程过滤:ss -tulp | grep nginx

ss是iproute2家族的骄傲,几乎所有现代发行版默认安装。


这五个命令(arp、ifconfig、iptables、which、netstat)几乎都指向同一个方向:net-tools已死,iproute2当道。

Linux的魅力就在于它永远在悄然进化,而我们这些用户,也要与时俱进。

你现在还在用哪个“老古董”命令?评论区告诉我,我来帮你找最优雅的替代写法~

大事!运维漫谈-技术交流群对外开放!
扫码可添加小编微信,申请进群
▲长按加群

最新文章

随机文章