温馨提示×

如何设置Debian定时器

小樊
38
2026-08-26 04:02:15
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)中,“定时器”通常指 systemd 定时器(systemd timer),它比传统的 cron 更现代、更灵活。下面我分几种常见方式来说明。


一、使用 systemd 定时器(推荐)

1️⃣ 创建一个服务(Service)

定时器本身不会执行任务,它用来触发一个 service

例如:创建一个每天执行的任务 /usr/local/bin/mytask.sh

sudo nano /usr/local/bin/mytask.sh

内容示例:

#!/bin/bash
echo "Hello from systemd timer" >> /tmp/mytask.log

赋予执行权限:

sudo chmod +x /usr/local/bin/mytask.sh

创建 service 文件:

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

内容:

[Unit]
Description=My Task

[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh

2️⃣ 创建定时器(Timer)

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

示例 1:每天 03:00 执行

[Unit]
Description=Run mytask daily at 3am

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

[Install]
WantedBy=timers.target

示例 2:每 10 分钟执行一次

[Timer]
OnBootSec=5min
OnUnitActiveSec=10min

示例 3:开机后 1 分钟执行一次

[Timer]
OnBootSec=1min

3️⃣ 启用并启动定时器

sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer

4️⃣ 查看定时器状态

systemctl list-timers
systemctl status mytask.timer

查看任务是否执行:

journalctl -u mytask.service

二、使用 cron(传统方式)

适合简单、单用户任务。

1️⃣ 编辑当前用户的 cron

crontab -e

2️⃣ 示例

# 每天 3 点执行
0 3 * * * /usr/local/bin/mytask.sh

# 每 10 分钟执行
*/10 * * * * /usr/local/bin/mytask.sh

3️⃣ 查看 cron 日志

grep CRON /var/log/syslog

三、systemd timer vs cron 对比

特性 systemd timer cron
精度
日志 journalctl syslog
依赖 systemd
适合系统服务
适合用户任务

四、常见时间格式(OnCalendar)

OnCalendar=*-*-* *:*:00        # 每分钟
OnCalendar=*-*-* 03:00:00      # 每天 3 点
OnCalendar=Mon *-*-* 09:00:00  # 每周一 9 点
OnCalendar=2026-01-01 00:00:00 # 指定日期

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

  • ✅ 是 系统任务 还是 用户任务
  • ✅ 多久执行一次
  • ✅ 是否需要开机执行

我可以帮你直接写好完整的 .timer + .service 文件。

0