Systemd-定时器单元

介绍

用于定时触发 service, 一般而言 .service 的定时器是同名的 .timer 文件.

示例

假如 /etc/systemd/system/my-test.service 内容为:

1
2
3
4
5
6
[Unit]
Description=My test Task

[Service]
Type=oneshot
ExecStart=/path/to/script.sh

则对应定时器文件为 /etc/systemd/system/my-test.timer, 内容为:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Test Task Timer

[Timer]
OnCalendar=daily
Persistent=True

[Install]
WantedBy=timers.target
  • OnCalendar 用于定义触发间隔:
    • 每分钟: *-*-* *:*:00
    • 每小时: hourly
    • 每天: daily
    • 每周: weekly
    • 每月: monthly
    • 指定时间: *-*-* 03:00:00 指每天早上 3 点
    • 每15秒: *-*-* *:*:00/15
    • 每15分钟: *-*-* *:00/15:*
  • Persistent 确保在系统重新启动后, 未执行的定时任务能够被触发, 比如计时器 1 小时触发一次, 当计时到 50 分钟时电脑关机了, 重启电脑后, 还是以 50 分钟继续计时, 而非重置

如果 .service 文件和 .timer 文件不同名, 则可以用 Unit 指定:

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Test Task Timer

[Timer]
OnCalendar=daily
Persistent=True
Unit=<name>.service

[Install]
WantedBy=timers.target

查看所有的定时器单元

1
systemctl list-timers

Systemd-定时器单元
http://example.com/2024/11/22/Systemd-定时器单元/
作者
Jie
发布于
2024年11月22日
许可协议