質問:
スクリプトを実行してLTE / GSMプロバイダーに接続できるsystemdサービスを開始しようとしていますが、eth0が切断されたときにのみサービスが正常に開始されるようにします。また、eth0が後で切断状態になるかどうか(より多くの努力が必要な場合)ではなく、起動後のサービストリガーにのみ興味があります。
試験を終えた:
これまで私が持っているのは、/var/run/inet-successに一時ファイルを書き込む/etc/network/if-up.d/lte-checkにあるスクリプトです。また、ExecStartPreを使用する前にファイルが存在しないことを確認するシステムサービスもあります。
結果:
起動時にeth0が接続されると(インターネット接続を使用)、inet-successファイルは揮発性ストアに書き込まれ、LTEサービスは実行されません。これは予想される動作です。
起動時にeth0が接続されていない場合、inet-successファイルは揮発性ストアに書き込まれず、LTEサービスは実行されません。これは予想される動作ではありません。
また、/var/run/inet-success を手動で削除すると、eth0 が接続されている状態 (インターネット接続) から起動し、systemd サービスが正しく開始されます。
環境:
Raspberry Pi4
Operating System: Raspbian GNU/Linux 10 (buster)
Kernel: Linux 4.19.118-v7l+
Architecture: arm
/etc/network/if-up.d/lte-check
#!/bin/sh
FLAGFILE=/var/run/inet-success
case "$IFACE" in
"--all") : ;;
*) exit 0;;
esac
if [ -e $FLAGFILE ]; then
exit 0
else
/usr/bin/touch $FLAGFILE
fi
/etc/systemd/system/lte.service
[Unit]
Description=LTE Service
After=network.target
StartLimitIntervalSec=0
[Service]
ExecStartPre=/usr/bin/test ! -f /var/run/inet-success
ExecStart=/opt/lte/files/quectel-CM/quectel-CM -s wireless.twilio.com
RestartSec=1m
Restart=on-failure
User=root
Type=simple
[Install]
WantedBy=multi-user.target