Cron 指南
指南

crontab 编辑与环境变量:PATH·Shell·用户

crontab -e·环境差异·系统 vs 用户 crontab

任务通常用 crontab -e 编辑。此命令会打开当前用户专属的 crontab,保存时会检查语法后再生效。列出用 crontab -l,全部删除用 crontab -r,但 -r 会不经确认直接删除,需要小心。

cron 执行任务的环境与您登录的 shell 不同。cron 只提供最小限度的环境,PATH 通常也像 /usr/bin:/bin 那样很短。因此在登录 shell 中可用的命令,在 cron 中常会因「找不到命令」而失败。将命令写成绝对路径更为稳妥。

可以在 crontab 文件顶部声明环境变量。常用的有 PATH=/usr/local/bin:/usr/bin:/binSHELL=/bin/bashMAILTO="you@example.com",以及固定时区的 CRON_TZ=Asia/Seoul。若值中含有空格,请用引号包裹。

用户 crontab 与系统 crontab 的格式不同。crontab -e 创建的用户 crontab 是标准5 字段(分 时 日 月 星期)。而 /etc/crontab/etc/cron.d/* 中的系统条目,则是在星期之后追加了执行用户字段的6 字段(分 时 日 月 星期 user 命令)。本工具解读的是标准 5 字段,因此检查系统 crontab 时,请去掉用户字段,只输入前 5 个字段。

如果不需要精细时刻,只是「每天·每小时」这样的粒度,也可以把脚本放进 /etc/cron.daily/etc/cron.hourly 这类投放目录(drop-in)。无需表达式即可按既定周期执行。只有在需要特定分·时刻时,才把用本工具生成的表达式放进 crontab,管理起来会更清爽。

资源

调度合集

复制即用的配方

语法速查表

一览 5 个字段与特殊字符

宏·别名

如 @daily 的简写表达

指南

真正理解 cron 并减少错误的实战指南