私の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の禁止を回避できます。