在 Debian(以及大多数现代 Linux 发行版)中,定时任务管理主要依赖两类机制:
下面分别说明,并给出常见用法。
# 查看状态
systemctl status cron
# 启动
sudo systemctl start cron
# 开机自启
sudo systemctl enable cron
crontab -e # 编辑当前用户任务
crontab -l # 查看
crontab -r # 删除全部
格式:
分 时 日 月 周 命令
示例:
0 2 * * * /backup.sh
每天凌晨 2 点执行
/etc/crontab
/etc/cron.d/
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.weekly/
/etc/cron.monthly/
例如:
sudo nano /etc/cron.d/myjob
0 3 * * * root /usr/local/bin/cleanup.sh
Debian 10+ 默认使用 systemd,更可控、可查看日志。
sudo nano /etc/systemd/system/backup.service
[Unit]
Description=Backup Job
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
sudo nano /etc/systemd/system/backup.timer
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers
systemctl status backup.timer
| 特性 | cron | systemd timer |
|---|---|---|
| 使用难度 | 简单 | 稍复杂 |
| 日志 | 弱 | 强(journalctl) |
| 依赖管理 | 无 | 有 |
| 推荐程度 | 旧系统 | 新系统 |
grep cron /var/log/syslog
journalctl -u backup.service
systemctl list-timers --all
如果你有具体场景(如“每天备份 MySQL”“开机运行一次”“每 5 分钟执行”),我可以给你完整示例。