我想在启动计算机 10 分钟后运行备份脚本,但每天只运行一次。是否可以使用 systemd 构建这样的场景?
答案1
答案2
我认为不可能完全在 systemd 中完成此操作,因为它不会跟踪重新启动之间的任何状态。您可以使用systemd.timer
和 itOnBootSec=
或轻松安排某些内容在启动后 10 分钟运行OnStartupSec=
。
脚本本身必须检查它今天是否已经运行。即使在 bash 中也可以轻松实现,例如:
#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`
[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE
答案3
如果启动后 10 分钟没有挂断,您可以:
[Unit]
Description=...
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
OnCalendar=daily
让它在每个午夜运行,Persistent=true
如果至少有一次错过运行,则在启动时运行。
答案4
显然这个问题将在未来的版本中得到解决。至少根据这systemd-devel 邮件列表上的电子邮件。在那之前,你必须采用克日什托夫提议的黑客方式。