障害時に無線を再接続するためのシステム装置

障害時に無線を再接続するためのシステム装置

WiFi接続を確立するconWlan0.serviceというシステムサービスがあります。今、定期的に接続を確認するために別のユニットを作成したいと思います。これが合理的な始まりですか?

[Unit]
Description=...
After=conWlan0.service
OnFailure=conWlan0.service

[Service]
Type=simple
ExecStart=/usr/bin/checkWiFi
RestartSec=120
Restart=always

すべてが正しい場合、checkWifiスクリプトは0で終了し、そうでない場合はエラーコードを返します。どんな提案がありますか?

ベストアンサー1

何かを定期的に実行するには、SystemDタイマーデバイスを使用する必要があります。継続的に再起動されるサービスデバイスを持つことは、基本的にシステムが常にパフォーマンス低下モードにあるため、良いアイデアではありません(1つ以上のサービスを実行することはできません)。

詳細はこちらからご覧いただけます。スタックオーバーフロー回答、内部にSystemDタイマーに関するArch Linux Wikiマニュアルページにありますが、systemd.timerそのポイントは次のとおりです。

1. 検査サービスの設定

/etc/systemd/system/checkwifi.service:

[Unit]
Description=...

[Service]
Type=oneshot
ExecSTart=/usr/bin/checkWiFi

2. タイマーを設定して時々WiFiを確認してください

/etc/systemd/system/checkwifi.timer:

[Unit]
Description=Timer for checkWifi
After=conWlan0.service

[Timer]
OnActiveSec=120

[Install]
WantedBy=timers.target

3. タイマーデバイスの起動と起動

systemctl enable --now checkwifi.timer

タイマーを起動してもconWlan0.serviceまだ起動していない場合は、systemctlタイマーの前提条件が満たされるまでブロックして待ちます。

おすすめ記事