我只是想知道 systemd 计时器/相关单元的同步。我有一个备份脚本每小时/每天/每周运行。我使用计时器Persistent=True
和OnCalendar=...
选项设置来启动单元。
问题是,如果由于机器关闭而错过了单元,systemd 会立即启动多个单元。由于这可能会导致问题,因此脚本使用锁定文件来确保任何时候都只有一个实例在运行:如果在执行脚本时存在锁定文件,则脚本会失败并且不会执行备份。我只是想知道 systemd 中是否有一种方法可以确保作业不并行运行(我似乎记得这在 anacron 中是可能的)以避免这种情况。
编辑:单元文件 ( [email protected]
) 如下所示:
[Unit]
Description=rsnapshot (%I) backup
[Service]
Type=oneshot
Nice=19
IOSchedulingClass=3
ExecStart=/usr/bin/rsnapshot %I
计时器示例如下 ( rsnapshot-hourly.timer
):
[Unit]
Description=rsnapshot hourly backup
[Timer]
OnCalendar=hourly
Persistent=true
[email protected]
[Install]
WantedBy=timers.target
正在运行的服务如下所示 ( ):systemctl status [email protected]
● [email protected] - rsnapshot (daily) backup
Loaded: loaded (/etc/systemd/system/[email protected]; static; vendor preset: disabled)
Active: activating (start) since Do 2015-07-23 21:42:03 CEST; 1min 2s ago
Main PID: 527 (rsnapshot)
CGroup: /system.slice/system-rsnapshot.slice/[email protected]
├─527 /usr/bin/perl -w /usr/bin/rsnapshot daily
└─560 /bin/rm -rf /media/large_store/backup/bigbox/daily.6/