在 Debian(以及大多数 Linux 发行版)里,通常所说的“定时器”一般有两种常见方式:
下面分别说明,并给出脚本怎么写、怎么配置。
例如写一个备份脚本:
#!/bin/bash
# /root/backup.sh
DATE=$(date +%F)
tar -czf /backup/data_$DATE.tar.gz /data
赋予执行权限:
chmod +x /root/backup.sh
crontab -e
添加一行(每天凌晨 2 点执行):
0 2 * * * /root/backup.sh
分 时 日 月 周
* * * * * 每分钟
0 * * * * 每小时
0 2 * * * 每天 2:00
0 2 * * 1 每周一 2:00
✅ 适合:简单定时任务
#!/bin/bash
# /usr/local/bin/mytask.sh
echo "$(date) task run" >> /var/log/mytask.log
chmod +x /usr/local/bin/mytask.sh
sudo nano /etc/systemd/system/mytask.service
内容:
[Unit]
Description=My Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh
sudo nano /etc/systemd/system/mytask.timer
每天 2 点执行:
[Unit]
Description=Run My Task Daily
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
查看状态:
systemctl list-timers
✅ 适合:需要日志、依赖、失败重试的任务
#!/bin/bash
source /etc/profile
* * * * * /root/backup.sh >> /var/log/backup.log 2>&1
| 场景 | 推荐 |
|---|---|
| 简单命令 | cron |
| 服务/脚本 | systemd timer |
| 需要日志 | systemd |
| 容器环境 | 看基础系统 |
如果你能告诉我:
我可以直接帮你写一份完整可用的配置。