📖 crontab 定时任务速查

按使用场景分组,点击"复制"按钮一键复制命令

表达式语法
五段结构:分 时 日 月 周
* * * * * <command>
每 5 分钟执行
*/5 * * * * /opt/job.sh
每天凌晨 2:30
30 2 * * * /opt/backup.sh
每周一早上 8 点
0 8 * * 1 /opt/report.sh
每月 1 号凌晨 0 点
0 0 1 * * /opt/monthly.sh
工作日(周一至周五)9 点
0 9 * * 1-5 /opt/workday.sh
多个时间点(6 点与 18 点)
0 6,18 * * * /opt/twice.sh
编辑与查看
编辑当前用户任务
crontab -e
查看当前用户任务
crontab -l
编辑指定用户任务(需 root)
crontab -u <user> -e
删除当前用户全部任务 ⚠️
crontab -r
系统级任务(可指定用户)
vim /etc/crontab(多一列用户字段)
查看系统级按周期目录
ls /etc/cron.daily /etc/cron.hourly
特殊写法(@ 宏)
开机启动执行一次
@reboot /opt/start.sh
每天凌晨(等价 0 0 * * *)
@daily /opt/daily.sh
每小时
@hourly /opt/hourly.sh
每周
@weekly /opt/weekly.sh
每月
@monthly /opt/monthly.sh
环境变量与输出
在 crontab 内声明变量(顶部)
PATH=/usr/local/bin:/usr/bin:/bin
指定接收告警邮件的地址
MAILTO="ops@example.com"
输出追加到日志(含错误)
*/5 * * * * /opt/job.sh >> /var/log/job.log 2>&1
完全丢弃输出
*/5 * * * * /opt/job.sh > /dev/null 2>&1
脚本内显式加载环境
*/5 * * * * . /etc/profile; /opt/job.sh
排错与日志
查看 cron 执行日志(CentOS)
tail -f /var/log/cron
查看 cron 执行日志(Ubuntu)
grep CRON /var/log/syslog
确认 cron 服务运行状态
systemctl status crond(Ubuntu 为 cron)
防任务重叠执行(加锁)
*/5 * * * * flock -n /tmp/job.lock /opt/job.sh
检查任务未执行的邮件告警
cat /var/spool/mail/<user>