在 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
分 时 日 月 周
* * * * *
示例:
*/5 * * * *30 3 * * *0 0 * * 0创建服务文件:
sudo nano /etc/systemd/system/backup.service
内容:
[Unit]
Description=Backup Script
[Service]
Type=oneshot
ExecStart=/root/backup.sh
sudo nano /etc/systemd/system/backup.timer
内容(每天 2:00):
[Unit]
Description=Run backup daily
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
查看状态:
systemctl list-timers
✅ 脚本里用绝对路径
✅ 开头加 shebang:
#!/bin/bash
✅ 环境变量可能不全,必要时手动 export
✅ 日志输出:
*/5 * * * * /root/backup.sh >> /var/log/backup.log 2>&1
| 场景 | 推荐 |
|---|---|
| 简单定时任务 | cron |
| 需要开机补偿、依赖服务 | systemd timer |
| 服务器长期运行 | 两者皆可 |
如果你愿意,可以告诉我:
我可以直接帮你写一份完整脚本 + 定时器配置。