/etc/sysconfig/network-scripts/
に ifcfg-eth0.bak
のようなサフィックスが .bak
なファイルがあっても無視されます。たしか MAC アドレスが変わった時とかに元のファイルがそのような名前で退避されていた気がします(CentOS 5 とか 6 とかで)。
がしかし、これは .bak
というサフィックスが特別扱いされているのであって、同じような感覚で ifcfg-eth0.save
みたいなファイルをバックアップのつもりで作成すると死にます。
# cp -a /etc/sysconfig/network-scripts/ifcfg-eth0{,.save}
# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
Bringing up interface eth0.save: [ OK ]
ifcfg-eth0.save
も有効な設定ファイルと認識されます。バックアップとしてコピーしたのなら DEVICE=eth0
という内容を含んでいると思うので、eth0
が2回初期化されることになります。
/etc/init.d/network
で次のように ifcfg-XXX
ファイルが検索されます。
# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=$(ls ifcfg* | \
LANG=C sed -e "$__sed_discard_ignored_files" \
-e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \
-e '/ifcfg-[A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
LANG=C sort -k 1,1 -k 2n | \
LANG=C sed 's/ //')
$__sed_discard_ignored_files
は /etc/init.d/functions
で次のように定義されています。
# A sed expression to filter out the files that is_ignored_file recognizes
__sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
なので、ifcfg-eth0.bak
だと無視されますが、ifcfg-eth0.save
だと含まれます。
ifcfg-ethX
とか ifcfg-bondX
とか ifcfg-ethX:X
みたいな決まった規則のファイル名だけ認識されるものだと勘違いしていました・・・