crontab -e编辑当前用户的定时任务。
约 892 字大约 3 分钟
2026-05-14
crontab 用来配置周期性任务,例如定时备份、定时清理日志、定时执行脚本。它语法简单,但很容易因为环境变量、路径和输出日志处理不当而踩坑。
`crontab` 用来配置周期性任务,例如定时备份、定时清理日志、定时执行脚本。它语法简单,但很容易因为环境变量、路径和输出日志处理不当而踩坑。
crontab -e编辑当前用户的定时任务。
crontab -l列出当前用户的 crontab。
0 2 * * * /path/backup.sh每天 02:00 执行脚本。
*/5 * * * * /path/check.sh高频巡检任务常见写法。
分 时 日 月 周 命令示例:
0 2 * * * /usr/local/bin/backup.sh表示每天凌晨 2 点执行备份脚本。
| 写法 | 含义 |
|---|---|
* * * * * | 每分钟 |
*/5 * * * * | 每 5 分钟 |
0 * * * * | 每小时整点 |
0 2 * * * | 每天 02:00 |
0 2 * * 1 | 每周一 02:00 |
0 2 1 * * | 每月 1 日 02:00 |
crontab -e # 编辑当前用户任务
crontab -l # 查看当前用户任务
crontab -r # 删除当前用户所有任务,谨慎使用系统级任务通常在 /etc/crontab、/etc/cron.d/ 或 systemd timer 中管理。
0 2 * * * /path/backup.sh >> /var/log/backup.log 2>&1如果不处理输出,任务产生的标准输出和错误输出可能通过邮件发送,或者直接丢失,不利于排查。
crontab 的执行环境比交互式 shell 简洁,很多命令路径和环境变量都不存在。建议:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 2 * * * cd /opt/app && /usr/bin/bash scripts/backup.sh >> /var/log/backup.log 2>&1先手动运行
把命令放进 crontab 前,先在终端手动运行一次,并尽量使用绝对路径。
crontab 适合简单、固定周期、失败后不需要复杂编排的任务。如果任务依赖关系很多、需要重试、需要观察状态,可能更适合 systemd timer、CI 调度器或专门的任务队列。
| 任务类型 | 是否适合 crontab | 说明 |
|---|---|---|
| 每天备份一个目录 | 适合 | 命令固定,周期清楚 |
| 每 5 分钟健康检查 | 适合 | 注意日志不要无限增长 |
| 多步骤数据流水线 | 不一定 | 失败处理和依赖关系会复杂 |
| 长时间常驻服务 | 不适合 | 应交给 systemd 管理 |
crontab -l 确认任务真的写进去了。/usr/bin/python3 /opt/app/job.py。chmod +x script.sh。>> /tmp/job.log 2>&1。多数 crontab 问题不是时间表达式错,而是执行环境和你手动登录的 shell 不一样。
版权归属:Shuo Liu