用户工具

站点工具


os:linux:systemd_timer

Systemd timer - 使用 systemd 执行定时任务

CMD

查看当前定时器状态

systemctl list-timers

每一个unit.timer都有一个[Timer]设置块,在这个设置块里,定义一些与定时器相关的设置:

OnActiveSec=:设置计时器时间,相对于unit.timer被激活的时间点 OnBootSec=:设置计时器时间,相对于系统启动后的时间点 OnStartupSec=:设置计时器时间,相对于systemd被初次启动后的时间点 OnUnitActiveSec=:设置计时器时间,相对于unit.timer中指定的unit file上一次被激活的时间点 OnUnitInactiveSec=:设置计时器时间,相对于unit.timer中指定的unit file上一次被冻结的时间点

上面五个设置格式均为Time Span,它们可以混合使用,比如你可以同时设置OnBootSec=和OnUnitActiveSec=。

OnCalendar=:设置计时器时间,格式为Calendar Event,否则其语义与OnActiveSec=相近 AccuracySec=:设置计时器精确度 Unit=:设置计时器启动unit file Persistent=:如果设置为true,unit file上一次被执行的时间点会被保存在硬盘文件 WakeSystem=:如果设置为true,计时器将会唤醒suspend状态

设置一个单脚本定时器

设置一个定时备份的定时器

Timer

[Unit]
Description=daily backup work
RefuseManualStart=no
RefuseManualStop=no
 
[Timer]
Persistent=false
# 系统启动 10min 后开始执行
OnBootSec=10min
# 每隔 1h 执行一次
OnUnitActiveSec=1h
 
# 或者: 周一到周五 每晚上执行
# OnCalendar=Mon-Fri *-*-* 01:02:00
 
Unit=y109-backup.service
 
[Install]
WantedBy=default.target

Service

[Unit]
Description=daily backup work
RefuseManualStart=no
RefuseManualStop=yes
 
[Service]
Type=oneshot
ExecStart=/usr/bin/tar -zcvpf \
/data/mnt/y109-1T/data/backup/y109-backup-hgw.tar.gz \
--exclude=/home/gavinyao/.cache \
/etc \
/home \
/var/www

设置一个多脚本定时器

定时器到期时会触发多个脚本同事执行

设置一个每 30min 执行的定时器

Timer

[Unit]
Description=y109 half hour timer
RefuseManualStart=no
RefuseManualStop=no
 
[Timer]
# 每 30min 执行一次
OnCalendar=*:0/30
Unit=y109-timer-30min.target
 
[Install]
WantedBy=default.target

Target

[Unit]
Description=y109 half hour timer target

Service

添加了 Install

[Unit]
Description=daily backup work
Wants=y109-timer-30min.timer
 
[Service]
Type=oneshot
ExecStart=/usr/bin/tar -zcvpf \
/data/mnt/y109-1T/data/backup/y109-backup-hgw.tar.gz \
--exclude=/home/gavinyao/.cache \
/etc \
/home \
/var/www
 
[Install]
WantedBy=y109-timer-30min.target

Enable & start

systemctl enable y109-backup.timer
systemctl start y109-backup.timer

Refrence

os/linux/systemd_timer.txt · 最后更改: 2015/12/17 03:35 (外部编辑)

页面工具