该命令ip a
显示网络端口列表并显示索引。
例如,1
对于lo
和2
此处enp5s0
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
如何重置索引?我有附上截图索引中间缺少很多数字。也就是说,它显示 15,(缺少 16 到 18),19,(缺少 20 到 86),87 到 94,(缺少 95 到 117),118,119。这是由于创建虚拟设备并删除它们造成的。现在这里如何让ip a
数字从 1 开始连续显示,如果有 10 个设备,索引应该从 1 到 10?
答案1
这些并不是真正的索引,而是ip
命令特定的序列号,当接口被删除时,这些序列号就会被弄乱,因此不应依赖它们来识别接口...重置它们的一种方法是简单地重启您的系统,以便重新创建内核的设备列表。
但是,如果这对你来说很重要的话,你可以按照你喜欢的方式显示它们,例如:
ip a | awk '$0 ~ "^[0-9]+:" {i++; sub("^[0-9]+:",i":")}1'
我确实尝试过ip
找到strace
这些数字的来源,但看来它们是内部创建的,ip
没有明显的外部来源迹象。
进一步看看源代码证实了上述假设,并揭示了ip
直接从内核提取设备数据,并且由于某种原因,已删除的设备似乎不断添加到设备总数中,但未显示在输出中。
这可能会清楚地解释……具体来说:”每个设备都有一个序列号作为标识号。这只是为了方便,不应用来指代设备。“。