Cron 任务详解:crontab 语法与示例
cron 用于在 Linux 和 macOS 服务器上按计划运行命令。本指南介绍 crontab 的格式、最常用的计划,以及导致 cron 任务悄悄失败的常见错误。
添加 cron 任务
运行 crontab -e,在编辑器中打开您自己的 crontab。每个任务写一行:5 个计划字段后接命令,例如 0 2 * * * /home/me/backup.sh。保存并关闭编辑器后,cron 会自动应用更改。
使用 crontab -l 列出您的任务。系统级任务位于 /etc/crontab 和 /etc/cron.d,其中计划之后还有一个字段,用于指定运行命令的用户。
读懂 5 个字段
从左到右依次是分钟、小时、日、月和星期。所有字段都与当前时间匹配时,任务才会运行。星号匹配任意值,逗号列出多个值,连字符表示范围,斜杠表示间隔。
把输出写入日志
cron 没有终端,输出会以邮件发给用户或直接丢失。在命令末尾加上 >> /var/log/myjob.log 2>&1,出现问题时就能查看日志。
cron 任务不运行的原因
- cron 中的 PATH 很精简。请使用程序和脚本的完整路径,例如 /usr/bin/python3。
- 脚本没有执行权限。请对它运行 chmod +x。
- 不会加载 shell 配置文件中的环境变量。请在 crontab 或脚本中设置。
- 服务器时区与您所在时区不同。请用 date 或 timedatectl 检查。
- 命令中的 % 会被当作换行。请写成 \%。
上线前先检查计划
把表达式粘贴到本页的 cron 解析工具中,用中文查看含义并检查接下来的运行时间。这样能在任务上线前发现超出范围的值,以及同时设置日和星期带来的陷阱。