インターネットに接続している場合にのみ5秒ごとにスクリプトを実行する方法

インターネットに接続している場合にのみ5秒ごとにスクリプトを実行する方法

私のGoogleドライブを更新するスクリプトがあります。このスクリプトを実行するためにsystemdユニットを作成し、10秒ごとにユニットを実行するタイマーを作成し、両方のユニットが機能します。ただし、インターネット接続を切断するとスクリプトが失敗し、インターネットが再びオンになってもsystemdの実行が停止します。 systemdにスクリプトを実行し続ける方法はありますか、それともインターネットに接続している場合にのみsystemdにスクリプトを実行させる方法はありますか?

これはファイルです

/etc/systemd/system/give.service:

[Unit]
Description=Syncronize google drive folder

[Service]
User=my_name
ExecStart=/home/my_name/bin/update-grive

/etc/systemd/system/grive.timer:

[Unit]
Description=Timer for how often to syncronize google drive folder

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s

[Install]
WantedBy=timers.target

/home/my_name/bin/update-give:

#!/usr/bin/env bash
cd /home/my_name/gdrive
grive

ベストアンサー1

Restart=alwaysサービスがクラッシュしても、systemdがサービスを開始し続けるようにサービスユニットに追加されました。

参考のために代わりにOnUnitInactiveSecを使用する必要がありますOnUnitActiveSec

OnUnitInactiveSec=10s(または20秒)は、サービスが停止してから10秒後にサービスを開始します。これにより、2回呼び出されることなくGoogle DOSの禁止を回避できます。

おすすめ記事