首页/系统/信创系统运维速查/系统级计划任务:/etc/cron.d 与目录任务
服务与运维65 条

系统级计划任务:/etc/cron.d 与目录任务

/etc/cron.d/ 放系统任务(比用户 crontab 多一个用户字段);cron.hourly/daily/weekly/monthly 目录放可执行脚本由 run-parts 调用;RPM 系常用 anacron 补跑停机的日/周任务。

信创系统运维速查系统更新于 2026-10-13

系统级计划任务放哪

系统级任务与用户级 crontab 分开管理:/etc/cron.d 下的文件写系统任务,每行比用户 crontab 多一个用户名字段;cron.hourly、cron.daily、cron.weekly、cron.monthly 目录用来放可执行脚本,由 run-parts 按目录周期调用。长期运行的任务建议改用 systemd timer 以便统一日志。

基本信息

系统任务目录/etc/cron.d/
目录式任务/etc/cron.hourly、cron.daily、cron.weekly、cron.monthly
调用者run-parts
补跑机制anacron(/etc/anacrontab)
服务名RPM 系 crond,DEB 系 cron

典型使用场景

  • 放送系统维护脚本,如日志清理与临时文件回收
  • 按天或按周执行备份与统计任务
  • 把脚本交给目录式任务,无需写时间表达式
  • 非 7x24 运行的机器需要停机后补跑任务
  • 运维交接:把定时任务统一放在受管目录便于审计

系统任务文件示例

系统任务文件示例
# /etc/cron.d/app-task(分 时 日 月 周 用户 命令,比 crontab 多一列用户)
30 3 * * *   root  /opt/scripts/cleanup.sh >/dev/null 2>&1
# 文件要求:属主 root、组与其他用户不可写、结尾有空行
ls -l /etc/cron.d/app-task
cat /etc/cron.d/app-task

目录式任务

目录式任务
ls /etc/cron.{hourly,daily,weekly,monthly}     # 查看各目录现有脚本
install -m 755 /opt/scripts/report.sh /etc/cron.daily/report   # 放入并按周期执行
run-parts --test /etc/cron.daily              # 演练看哪些文件会被执行
cat /etc/anacrontab                           # 查看补跑配置
journalctl -u crond -n 50 --no-pager | tail -20   # 确认任务被触发

三种调度方式对比

方式配置文件特点
用户 crontabcrontab -e按用户隔离,环境最简
系统任务/etc/cron.d/多一列用户名,便于集中管理
目录式任务cron.daily 等目录按目录周期执行,不需要写时间
systemd timertimer 与 service 单元日志进 journal,可配依赖与补跑
anacron 负责补跑停机期间错过的日、周任务;机器不是全天运行的场景下,能否补跑取决于 /etc/anacrontab 的配置。

运维建议

  • 任务脚本登记进配置管理或资产清单
  • 重要任务加重定向并记录退出码
  • 避免多个入口重复定义同一任务
  • 定期核对补跑配置是否符合预期
  • 任务集中管理,便于交接与审计

易错点

  • /etc/cron.d 文件格式不规范:缺少结尾换行、属主不是 root 或组与其他用户可写时会被静默忽略
  • 目录式任务的脚本名带扩展名:run-parts 对文件名有匹配规则,用 run-parts --test 先行确认
  • 把长任务放在目录式任务里:同周期任务会串行执行且无超时控制,耗时任务改用 systemd timer
  • 系统任务忘记写用户名那一列:格式与用户 crontab 不同,漏写会导致整行被忽略
  • 既写用户 crontab 又写系统任务:同一任务重复触发,交接时先核对两处
  • 在系统任务文件里使用行中注释:只有行首井号才被当作注释,行中井号会被当成命令内容执行

数据来源与参考

  • man 5 crontab(/etc/cron.d)
  • man 8 anacron
  • man 8 run-parts
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌