温馨提示×

Debian定时器如何设置周期

小樊
40
2026-07-30 09:24:25
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)中,定时器(Timer)通常是指 systemd Timer,用来按周期或时间点触发任务。下面从最常见用法示例系统说明。


一、systemd Timer 的基本原理

systemd Timer 由 两个文件组成:

  1. Service 单元:定义要执行的任务
  2. Timer 单元:定义触发条件(周期、时间点)

Timer 会 触发对应的 Service


二、创建 Service(要执行的任务)

例如:每 10 分钟执行一个脚本 /home/user/backup.sh

1️⃣ 创建 service 文件

sudo nano /etc/systemd/system/backup.service

内容示例:

[Unit]
Description=Backup Script

[Service]
Type=oneshot
ExecStart=/home/user/backup.sh

Type=oneshot 表示执行一次即结束(定时任务常用)


三、创建 Timer(设置周期)

sudo nano /etc/systemd/system/backup.timer

常见周期示例

✅ 每 10 分钟执行一次

[Unit]
Description=Run backup every 10 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=10m

[Install]
WantedBy=timers.target

含义:

  • OnBootSec=5min:开机 5 分钟后开始
  • OnUnitActiveSec=10m:每次执行后 10 分钟再次执行

✅ 每天凌晨 2 点执行

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

✅ 每周一 03:30

OnCalendar=Mon *-*-* 03:30:00

✅ 每小时执行一次

OnCalendar=hourly

或:

OnCalendar=*-*-* *:00:00

四、启用并启动 Timer

sudo systemctl daemon-reload
sudo systemctl enable backup.timer
sudo systemctl start backup.timer

五、查看 Timer 状态

查看所有定时器

systemctl list-timers

查看某个 timer 状态

systemctl status backup.timer

查看 service 是否被触发

systemctl status backup.service
journalctl -u backup.service

六、常用 Timer 时间格式说明

OnCalendar 示例

含义 写法
每分钟 * * * * *
每小时 *-*-* *:00:00
每天 08:30 *-*-* 08:30:00
每周一 Mon *-*-* 00:00:00
每月 1 号 *-*-01 00:00:00

七、与 cron 的区别(简要)

对比 systemd Timer cron
精度 秒级 分钟级
日志 journalctl 邮件/日志
依赖 systemd crond
推荐 现代 Debian 老系统

八、如果你只是想“简单定时”

也可以用 cron(传统方式):

crontab -e
*/10 * * * * /home/user/backup.sh

九、总结(推荐做法)

Debian 10+ 推荐 systemd Timer
✅ 周期任务 = Timer + Service
✅ 查看状态用 systemctl list-timers


如果你愿意,可以告诉我:

  • 你是 服务器 / 桌面 / 容器
  • 多久执行一次
  • 执行的是 脚本 / 命令 / 程序

我可以直接帮你写完整可用的 Timer 文件。

0