Linuxサーバー(CentOS7.9カーネル5.4.179-1.el7.elrepo.x86_64)で奇妙な問題を調査しています。完全に正常なサービスがあります。
# /etc/systemd/system/test.service
[Unit]
Description=tet
Before=frr.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/test.sh
[Install]
WantedBy=multi-user.target
test.shはネットワークを構成します(例:単純化された疑似コード)。
show nic name by mac
enp1s0f0
たとえば、従来の名前などの代わりに最新のネットワークカード名を出力し、eth1
サービスは他のすべてのサーバーで正常に動作します。
ところがある日、例えば昔の方式のネットワークカード名が出力されたようですがeth1
、その当時さかのぼる関連ログが見つかりません。
dmesgでネットワークカード名変更ログが見つかりました。
[Fri Sep 15 00:38:24 2023] bnxt_en 0000:01:00.1 eth1: Broadcom BCM57414 NetXtreme-E 10Gb/25Gb Ethernet found at mem 4000200000, node addr 11:11:11:11:11:11
[Fri Sep 15 00:38:24 2023] bnxt_en 0000:01:00.1 enp1s0f1: renamed from eth1
だからネットワークカード名はeth1ではないかと思います。
multi-user.targetが起動した後でもネットワークカード名の変更が発生するかどうかを知りたいです。 (multi-user.targetはほとんどのサービスに接続されています)
ネットワークカードの名前変更は、より早く開始されるsystemd-udevd.serviceで発生しますが、ハードウェアイベントを継続的に受信するため、ネットワークカードが予想より遅くなり、test.serviceが起動した後でも名前が変更される可能性があります。
これが本当なら、それを使うべきだと思います。
udevadm settle
nic名前の変更が自動的に待機されるように、保留中のudevイベントがないことを確認してください。