Vit*_*you 3 internet systemd systemd-timer
我有一个更新我的谷歌驱动器的脚本。我制作了一个 systemd 单元来运行这个脚本,以及一个每 10 秒运行一次该单元的计时器,两者都可以工作。但是,当我与互联网断开连接时,即使互联网重新打开,脚本也会失败并且 systemd 停止运行它。有什么办法可以让 systemd 继续运行脚本,或者有没有办法让 systemd 仅在有互联网连接的情况下运行脚本?
这是文件
/etc/systemd/system/grive.service:
[Unit]
Description=Syncronize google drive folder
[Service]
User=my_name
ExecStart=/home/my_name/bin/update-grive
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/home/my_name/bin/update-grive:
#!/usr/bin/env bash
cd /home/my_name/gdrive
grive
Run Code Online (Sandbox Code Playgroud)
添加Restart=always
到服务单元,这样 systemd 会在服务崩溃时继续提供服务。
附带说明一下,您应该使用OnUnitInactiveSec
而不是OnUnitActiveSec
.
OnUnitInactiveSec=10s
(或 20 秒)将在停止后 10 秒启动服务。这样你就可以确保它不会被调用两次,并可能避免禁止 DOSing google
小智 5
确保将精度设置为秒,如下所示:
AccuracySec=1s
Run Code Online (Sandbox Code Playgroud)
根据文档:
AccuracySec= 指定计时器运行的精度。默认为 1 秒。来源:https ://www.freedesktop.org/software/systemd/man/systemd.timer.html#Description
在您的 .timer 文件中执行此操作。
我已经为此挣扎了很长一段时间。
归档时间: |
|
查看次数: |
6974 次 |
最近记录: |