私は非常にシンプルなサービスを書いた。
[Unit]
Description=Service on interface %I
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/project/my_script.sh start %I
[Install]
WantedBy=multi-user.target
私はネットワークインターフェイスがどこにあるかをsystemclt start myservice@net0
考え始めました。net0
ネットワークインターフェイスが再起動されるたびにサービスを再起動するにはどうすればよいですか?
ベストアンサー1
次のように、システムデバイスをそのインターフェイスのデバイスの対応するネットワークインターフェイス(自動ロード)にバインド(BindTo
)および依存(DependsOn
)することができます。.device
[Unit]
Description=Service on interface %I
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/project/my_script.sh start %I
[Install]
WantedBy=multi-user.target
カスタムデバイスにネットワークインターフェイスが必要な場合は、Wants
次のものを追加してデバイスの依存関係を定式化できます。After
実際にオンラインセクションに以下を追加するだけです[Unit]
。
Wants=network-online.target
After=network-online.target
注:を実行して単位を確認できます.device
。loaded
systemctl list-units --type=device