cron Cheatsheet - Job Scheduling

Linux 定时任务必备的 Cron 速查表,从基本格式到调试排错,按场景分类整理,写定时任务直接查表改参数。

SysOps·43 commands·Last updated 2026-07-21
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 -e
root 编辑指定用户的 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。