ip addr命令详解_linux more命令详解

2022-09-19 18:43:07 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

(我意识到这是一个古老的问题,但谷歌把我带到了这里,因为我试图找出确切的变化和替换以及它们如何不同).

我相信替换和更改都用于修改现有地址.考虑:

ip addr add 192.168.1.10/32 dev dummy0

这让我:

32: dummy0: mtu 1500 qdisc noqueue state UNKNOWN group default

link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff

inet 192.168.111.10/32 scope global dummy0

valid_lft forever preferred_lft forever

inet6 fe80::58ec:58ff:fe4f:d135/64 scope link

valid_lft forever preferred_lft forever

如果我再次运行相同的命令,我会收到一个错误:

# ip addr add 192.168.111.10/32 dev dummy0

RTNETLINK answers: File exists

如果我想修改该地址上的标志,我可以使用更改或替换.在这里,我使用ip addr更改来修改该地址上的preferred_lft和valid_lft设置:

# ip addr change 192.168.111.10/32 dev dummy0 preferred_lft 300 valid_lft 300

# ip addr show dummy0

32: dummy0: mtu 1500 qdisc noqueue state UNKNOWN group default

link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff

inet 192.168.111.10/32 scope global dynamic dummy0

valid_lft 298sec preferred_lft 298sec

inet6 fe80::58ec:58ff:fe4f:d135/64 scope link

valid_lft forever preferred_lft forever

ip addr replace的行为是相同的.实际上,如果查看代码,它们会导致几乎相同的操作:

if (matches(*argv,”change”) == 0 ||

strcmp(*argv,”chg”) == 0)

return ipaddr_modify(RTM_NEWADDR,NLM_F_REPLACE,argc-1,argv 1);

if (matches(*argv,”replace”) == 0)

return ipaddr_modify(RTM_NEWADDR,NLM_F_CREATE|NLM_F_REPLACE,argv 1);

看起来这里的意图是更改将仅修改现有地址,而替换将修改现有地址或如果指定的地址不存在则创建新地址.在实践中,似乎更改和替换将添加地址(如果它尚不存在).

如果你真的想要添加一个新地址并删除一个旧地址,你需要分两步完成,使用ip addr del,然后是ip addr add(当然,反过来).

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164670.html原文链接:https://javaforall.cn

0 人点赞