首页/系统/Linux 运维命令速查//etc/cron.d 分片目录规范
定时任务与计划50 条

/etc/cron.d 分片目录规范

软件包与配置管理工具偏爱的任务落点:每任务一个文件、格式同 /etc/crontab(含用户字段)、文件名限字母数字下划线连字符且不带点。

Linux 运维命令速查系统更新于 2026-10-13

cron.d 是什么

/etc/cron.d 是按文件粒度存放系统定时任务的标准目录,每个文件独立描述若干任务,格式与 /etc/crontab 相同——在 5 个时间字段和命令之间多一个「以哪个用户运行」的字段。软件包与配置管理工具偏爱用它:增删任务只需增删文件,不必去编辑一个被多方共享的文件,天然避免了并发写入冲突。

基本信息

适用平台Linux(Vixie/ISC cron、cronie 等实现)
文件格式分 秒 时 日 月 周 用户 命令,共 7 列(比 crontab -e 多一个用户字段)
文件名规则只使用字母、数字、下划线、连字符,不要带点号
权限要求文件属主 root、权限 0644;组可写或其他用户可写会被拒绝执行
生效方式cron 每分钟扫描该目录,改完文件自动生效,通常不需要重启服务

典型使用场景

  • 软件包注册后台任务:安装时放入文件、卸载时删除文件,干净可靠
  • 配置管理下发:Ansible、Puppet 等按文件管理任务,天然幂等
  • 多任务拆分:一个应用一个文件,便于按业务单独启停与审计
  • 环境变量管控:在文件顶部统一声明 SHELL 与 PATH,避免依赖默认值
  • 审计与排查:ls -l 目录即可看清有哪些系统级任务

创建任务文件

创建任务文件
sudo tee /etc/cron.d/app-clean > /dev/null <<'EOF'
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
10 3 * * * www /opt/app/clean.sh >> /var/log/app/clean.log 2>&1
EOF
sudo chown root:root /etc/cron.d/app-clean
sudo chmod 0644 /etc/cron.d/app-clean

检查与验证

检查与验证
ls -l /etc/cron.d/                       # 确认属主与权限
grep -r app /etc/cron.d/ | head           # 确认任务内容
sudo tail -n 30 /var/log/cron             # RHEL 系看执行记录
sudo grep CRON /var/log/syslog | tail     # Debian 系看执行记录

任务落点对比

位置是否带用户字段适用场景
/etc/crontab是发行版预置的系统任务,不建议手工改
/etc/cron.d/文件是软件包与配置管理下发的系统任务
crontab -e否以当前用户身份运行的个人任务
/etc/cron.daily 等否交给 run-parts 执行的脚本目录,按天/周/月粒度
cron.d 文件权限或属主不当(如 0666、非 root 属主)会被 cron 拒绝执行并在日志里记错;标准是 root:root 与 0644。文件里指定了执行用户时,运行该命令的权限就来自这个用户,不要用 root 跑业务脚本。
文件顶部显式声明 SHELL 与 PATH 是稳妥做法:cron 的运行环境极简,PATH 往往只有 /usr/bin:/bin,脚本里调用的自定义命令会报 command not found。文件名不要带点号,这是从 run-parts 命名规则沿袭下来的约定。
排查「任务没执行」的标准顺序:确认文件名合规、确认权限属主为 root:root 且 0644、确认字段是 7 列、确认命令里的程序写成绝对路径与 PATH 里的目录,最后再看系统日志里 cron 对该文件的记录。多数问题都落在前四条上。

易错点

  • 文件名含点号(如 app.daily)会被跳过,改名即解决,排查时先看文件名
  • 文件末尾缺换行时最后一行任务可能不被解析,写文件务必以换行收尾
  • 从 crontab -e 直接复制内容过来会缺少用户字段,导致 cron 把「用户」当成命令的一部分
  • 文件权限或属主不合规会被静默拒绝,只在系统日志里留记录,排查时别忘了看 cron 日志
  • 任务里没重定向输出时,任何标准输出都会触发本地邮件投递,长期积累会撑满邮件队列或磁盘

数据来源与参考

  • man 5 crontab(/etc/cron.d 小节)
  • Debian cron 文档:run-parts 命名规则

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌