cron是linux中每分钟扫描任务列表的后台守护进程,支持用户级和系统级定时任务配置,需注意路径、环境变量及日志记录。

cron 是 Linux 系统中负责周期性执行命令或脚本的核心服务,本质是一个后台守护进程(crond),每分钟扫描一次任务列表,按规则触发对应操作。它不依赖用户登录,开机即可运行,是自动化运维的基础工具。
crontab 文件格式与时间字段含义
每一行定时任务由六个字段组成,前五个是时间设定,第六个是待执行的命令:
-
分钟:0–59,例如
30表示第30分钟 -
小时:0–23,例如
2表示凌晨2点 -
日期:1–31,例如
*表示每月任意一天 -
月份:1–12 或英文缩写(
jan,feb等) -
星期:0–7(0 和 7 都表示周日),或
sun,mon等 -
命令:必须使用绝对路径,如
/bin/bash /home/user/backup.sh
示例:0 3 * * 1-5 /usr/local/bin/daily-report.sh 表示工作日(周一至周五)凌晨3点执行日报脚本。
用户级与系统级任务配置方式
普通用户用 crontab -e 编辑自己的任务,文件实际保存在 /var/spool/cron/;系统级任务则通过编辑 /etc/crontab 或放入 /etc/cron.d/ 目录实现。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
/etc/crontab比用户 crontab 多一个“执行用户”字段,格式为:分 时 日 月 周 用户名 命令 -
/etc/cron.hourly、/etc/cron.daily等目录适合放整点批量脚本,系统会自动调用run-parts执行其中所有可执行文件 - 修改后无需手动重启 cron,但需确保语法正确,否则该用户所有任务可能失效
常用操作与调试要点
日常管理离不开几个关键命令和细节处理:
- 查看当前用户的任务:
crontab -l;清空所有任务:crontab -r - 避免环境变量缺失:在 crontab 文件顶部添加
SHELL=/bin/bash和PATH=/usr/local/bin:/usr/bin:/bin - 输出重定向很重要:用
> /tmp/cron.log 2>&1把 stdout 和 stderr 记录下来,方便排查失败原因 - 日志默认写入
/var/log/syslog(Debian/Ubuntu)或/var/log/cron(RHEL/CentOS),可用grep CRON过滤 - 测试时建议先手动运行命令,再设为定时任务,确认权限(
chmod +x)、路径、依赖都正常
便捷写法与特殊符号用法
除了数字组合,cron 支持多种简写提升可读性:
-
@daily等价于0 0 * * *(每天0点) -
@hourly等价于0 * * * *(每小时第0分钟) -
@reboot表示系统启动时执行一次(适用于初始化脚本) - 逗号
,表示“或”,如0 8,18 * * *表示每天早8点和晚6点 - 斜杠
/表示“每隔”,如*/10 * * * *表示每10分钟执行一次 - 短横线
-表示范围,如0 9-17 * * 1-5表示工作日9点到17点整点执行
注意:系统级 /etc/crontab 不支持 @daily 这类简写,仅用户 crontab 支持。










