如何使用 systemd 在每周星期六启动时运行脚本?

如何使用 systemd 在每周星期六启动时运行脚本?
[Unit] 
Description=run test service

[Timer]
OnCalendar=Sat *-*-* 00:00:01
Unit=test.service
Persistent=true

[Install]
WantedBy=timers.target

上面的例子中一切正常。但我必须在上午 10 点之前启动我的 Linux 操作系统。

我的目标是:我想在每个星期六的任何时间启动我的 Debian 10,然后在启动时运行脚本。如果我在星期六(同一天)重启我的 Linux 机器两三次,我不想再次运行脚本,只想运行一次。可以使用 systemd 做到这一点吗?

我的 Gnu-Linux 操作系统是Debian GNU/Linux 10(破坏者)并且 systemctl --version 是systemd 241 (241)

答案1

“Linux 操作系统”太笼统以便能够诊断您的特定系统。请运行以下四个命令并报告结果(如果命令不可用,则包括错误)。报告将告诉您安装了哪种“linux os”以及正在运行哪个版本的 systemd:

lsb_release -a
systemctl --version
/sbin/init --version
busctl --system get-property org.freedesktop.systemd1 \
                           /org/freedesktop/systemd1 \
                           org.freedesktop.systemd1.Manager \
                           Version

在当前(截至 2019 年 8 月)的 systemd 版本上

将实时计时器设置为周六的任何时间触发

OnCalendar=Sat *-*-* 00:00:01

并删除单片定时器

OnBootSec=2

的效果

Persistent=true

系统将尝试每周星期六 00:00:01 后执行一次该脚本。该脚本将只在每个星期六运行一次,并且通常是第一次启动时。如果系统星期六未开机,它将在一周中的任何其他日子运行;如果系统星期五晚上未开机,它将在 00:00:01 运行。

持久性=

采用布尔参数。如果为 true,服务单元上次触发的时间将存储在磁盘上。当计时器激活时,如果服务单元在计时器不活动期间至少被触发一次,则立即触发服务单元。这对于在机器关闭时赶上错过的服务运行很有用。请注意,此设置仅对使用 OnCalendar= 配置的计时器有效。默认为 false。

相关内容