CentOS 3個ifcfg-eth* 同步的機制? - Linux

Table of Contents

各位好,目前我使用的環境是CentOS release 6.9 (Final)

系統上目前有3個ifcfg-eth0
分別是
/etc/sysconfig/networking/profiles/default/ifcfg-eth0
/etc/sysconfig/networking/devices/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0

前兩檔案主要是源自system-config-network

現在發現我若是透過system-config-network 或是 用vim去修改3個中任一設定
回到shell以後3個檔案都會被同步成相同的內容
若是用sed去變更,則3個就不會再被同步

請問這中間同步的機制是怎麼運作呢??



用vim 隨機改3個中任一個
[root@buildme etc]# FILE=$(find /etc/sysconfig -type f -name "ifcfg-eth0" |
shuf -n 1); grep -q ONBOOT=yes ${FILE} &&
STRING="%s/ONBOOT=yes/ONBOOT=no/g|wq" ||
STRING="%s/ONBOOT=no/ONBOOT=yes/g|wq"; vim -c ${STRING} ${FILE}; find
/etc/sysconfig -type f -name "ifcfg-eth0"
-ls
678526 4 -rw-r--r-- 3 root root 240 Nov 16 15:11
/etc/sysconfig/networking/profiles/default/ifcfg-eth0
678526 4 -rw-r--r-- 3 root root 240 Nov 16 15:11
/etc/sysconfig/networking/devices/ifcfg-eth0
678526 4 -rw-r--r-- 3 root root 240 Nov 16 15:11
/etc/sysconfig/network-scripts/ifcfg-eth0


用sed 隨機改3個中任一個
[root@buildme etc]# FILE=$(find /etc/sysconfig -type f -name "ifcfg-eth0" |
shuf -n 1); grep -q ONBOOT=yes ${FILE} && STRING="s/ONBOOT=yes/ONBOOT=no/g"
|| STRING="s/ONBOOT=no/ONBOOT=yes/g"; sed -i -e ${STRING} ${FILE}; find
/etc/sysconfig -type f -name "ifcfg-eth0" -ls
678526 4 -rw-r--r-- 1 root root 240 Nov 16 15:11
/etc/sysconfig/networking/profiles/default/ifcfg-eth0
678530 4 -rw-r--r-- 1 root root 240 Nov 16 15:12
/etc/sysconfig/networking/devices/ifcfg-eth0
678529 4 -rw-r--r-- 1 root root 241 Nov 16 15:13
/etc/sysconfig/network-scripts/ifcfg-eth0





--

All Comments

Christine avatarChristine2017-11-20
你有沒有注意到 他們一開始inode number都一樣 ref count
都是3 所以是hard link 然後 sed 會破壞hard/soft link
Tristan Cohan avatarTristan Cohan2017-11-23
因為sed的實作是 先寫到暫存 然後覆蓋原始檔案
Olga avatarOlga2017-11-26
推高手