这是红帽企业 Linux 5 系统 (RHEL)。我们使用 CFengine 管理这个系统。
我们有几个 cronjobs,其运行频率是平时的两倍。我检查了下面的 cronjobs /etc/cron.d/
,该目录包含名为 的实际脚本host-backup
,并且还包含一个名为 的 cfengine 备份文件host-backup.cfsaved
,如下所示:
/etc/cron.d/host-backup
/etc/cron.d/host-backup.cfsaved
该操作系统是否执行 处的所有文件/etc/cron.d/*
,还是仅执行与特定模式匹配的文件。我可以配置它吗?它是在哪里定义的?
我在 RHEL 或 CentOS 文档中找不到这个答案。
答案1
(如果您支付红帽支持费用,您应该问他们此类问题。这正是您支付的费用!)
如果存在,则
/etc/cron.d/
像 cron 假脱机目录一样解析该目录,只不过其中的文件不是特定于用户的,因此使用/etc/crontab
语法读取(用户在第 6 列中明确指定)。
(是否有一种更简单的方法可以在不访问 RHEL 手册页的情况下阅读它?至少这样我可以看到该段落是 Red Hat 补丁的一部分,因此它不是标准的 Vixie Cron 4.1 功能。)
查看源代码,我发现跳过了以下文件:.*
, #*
, *~
. *.rpmnew
, *.rpmorig
, *.rpmsave
.所以是的,*.cfsaved
除了原始文件之外,您的文件也会被读取。
答案2
我认为您难以找到答案的原因是这不是特定于红帽的问题。您看到的问题是标准功能的一部分cron
- 您识别的目录中的每个文件是自动视为单独的工作。
因此,您的问题的简短答案是“是的,所有文件都被执行”。我认为这不是可以配置的。
答案3
以下是 RedHat 支持人员的答复:
请注意, cron.d 目录下的所有文件都会被检查和执行,它基本上是 /etc/crontab 文件的扩展(即;如果将条目添加到 /etc/crontab 文件,效果相同)
因此,回答我的问题“这个操作系统是执行 /etc/cron.d/* 中的所有文件,还是只执行与特定模式匹配的文件。我可以配置它吗?它是在哪里定义的?”
/etc/cron.d/* 下的所有文件都会被执行(尽管根据源文件中的文档,某些文件扩展名(例如 .rpmsave、*~ 等)似乎被忽略)。无法通过配置文件进行配置。如果重新编译源代码,则可能可以配置此功能。源代码包含的文档中提到了此行为,但没有出现在我能找到的任何手册或手册页中。