crontab 基础
# 分 时 日 月 周 命令
0 3 * * * /usr/bin/python3 /opt/backup.py >> /var/log/backup.log 2>&1
注意:cron 环境变量与登录 shell 不同,PATH 很短。脚本中务必使用绝对路径,或在 crontab 顶部显式设置 PATH。
常见陷阱
- 时区问题:cron 使用系统时区,容器内可能是 UTC
- 并发执行:任务运行时间超过间隔会导致多个实例同时运行
- 输出未重定向:默认发邮件,MAILTO="" 可禁用
systemd timer
systemd timer 有更好的日志集成和依赖管理,适合需要在某服务启动后才执行的场景。
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
选择建议
简单周期任务用 crontab 够了;需要日志、依赖、失败重试的场景用 systemd timer 更合适。