在 Debian 系统中,调度定时进程主要有以下几种常用方式,最常见的是 cron 和 systemd timer。下面按使用频率和场景给你系统讲解。
每个用户都可以有自己的 cron 任务。
crontab -e
格式:
分 时 日 月 周 命令
示例:
# 每天凌晨 2 点执行备份脚本
0 2 * * * /home/user/backup.sh
# 每 5 分钟执行一次
*/5 * * * * /usr/local/bin/check.sh
查看当前任务:
crontab -l
删除当前用户任务:
crontab -r
系统任务通常在:
/etc/crontab
/etc/cron.d/
示例(/etc/crontab):
30 3 * * * root /usr/local/bin/cleanup.sh
注意:系统 crontab 需要指定 用户。
Debian 提供以下目录,按周期自动执行:
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
只需把脚本放进对应目录并赋予执行权限:
chmod +x /etc/cron.daily/myscript
sudo nano /etc/systemd/system/backup.service
内容:
[Unit]
Description=Backup Service
[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
适合“只运行一次”的定时任务。
sudo apt install at
echo "/home/user/job.sh" | at 23:30
查看任务:
atq
删除任务:
atrm 任务编号
systemctl status cron
grep cron /var/log/syslog
| 场景 | 推荐 |
|---|---|
| 简单定时脚本 | cron |
| 系统服务级任务 | systemd timer |
| 一次性任务 | at |
| 高可靠 + 日志 | systemd timer |
如果你有具体场景(比如“每天备份 MySQL”“每隔 10 秒执行一次”),我可以直接帮你写配置。