cron Cheatsheet - Job Scheduling
Linux 定时任务必备的 Cron 速查表,从基本格式到调试排错,按场景分类整理,写定时任务直接查表改参数。
Back to SysOps时间格式与特殊字符 7
* * * * * command格式:分 时 日 月 周
*/15 * * * *每 15 分钟执行(步进)
0 */2 * * *每 2 小时执行
0 18 * * 0-6每天 18:00 执行(0-6 范围)
10 2 * * 6,7周六日 2:10 执行(逗号列表)
0 0 * * 0每周日午夜执行
0 0 1 * *每月 1 号午夜执行
特殊字符串 6
@reboot系统启动时执行一次
@hourly每小时(同 0 * * * *)
@daily / @midnight每天午夜(同 0 0 * * *)
@weekly每周日午夜(同 0 0 * * 0)
@monthly每月 1 号午夜(同 0 0 1 * *)
@yearly / @annually每年 1 月 1 日(同 0 0 1 1 *)
系统级 cron 6
/etc/crontab系统主 crontab 文件,格式比用户级多一列用户名
/etc/cron.d/存放独立的 cron 任务文件,格式同 /etc/crontab
/etc/cron.hourly/每小时执行的脚本目录
/etc/cron.daily/每天执行的脚本目录
/etc/cron.weekly/每周执行的脚本目录
/etc/cron.monthly/每月执行的脚本目录
用户级 crontab 命令 7
crontab -e编辑当前用户的 crontab
crontab -l列出当前用户的定时任务
crontab -r删除当前用户的所有定时任务
crontab -ri删除前确认提示
crontab -u user -eroot 编辑指定用户的 crontab
crontab -u user -l查看指定用户的定时任务
echo "@reboot echo hi" | crontab管道方式快速设置任务
环境变量配置 6
SHELL=/bin/bash指定 cron 执行命令时使用的 shell
PATH=/usr/local/bin:/usr/bin:/bin设置命令搜索路径,cron 默认 PATH 很精简
MAILTO="admin@example.com"任务输出通过邮件发送给指定地址
MAILTO=""关闭邮件通知,不发送任何输出
HOME=/root设置执行时的 HOME 目录
CRON_TZ=Asia/Shanghai设置 cron 使用的时区
常用示例 6
0 2 * * * /path/backup.sh每天凌晨 2 点执行备份脚本
*/5 * * * * curl -s https://example.com/health每 5 分钟健康检查
0 9 * * 1-5 mail -s "Report" team@example.com工作日 9 点发送邮件
0 0 1 * * /path/cleanup.sh每月 1 号清理临时文件
30 3 * * * /usr/bin/logrotate /etc/logrotate.conf每天 3:30 轮转日志
0 0 * * 0 /path/weekly-report.sh >> /var/log/report.log 2>&1每周日生成报告并记录日志
调试与排查 5
grep CRON /var/log/syslog查看 Debian/Ubuntu 的 cron 执行日志
grep cron /var/log/cron查看 RHEL/CentOS 的 cron 执行日志
date确认系统时区是否正确,cron 按服务器时区执行
systemctl status cron检查 cron 服务是否正常运行
* * * * * echo test >> /tmp/cron-test 2>&1调试:每分钟写一行测试 cron 是否工作
💡 Tips
- 时间格式:分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-6, 0=周日)。
- * 表示所有值,, 分隔多个值,- 表示范围,/ 表示步长。
- 脚本路径必须用绝对路径,否则可能找不到命令。
- cron 环境变量 minimal,建议在脚本里显式设置 PATH。
- 日志输出:command >> /var/log/cron.log 2>&1 重定向 stdout 和 stderr。
- 周日和周天都可用 0 或 7 表示,不同发行版可能不同,建议统一用 0。