RHEL/CentOS 是执行 /etc/cron.d/* 下的所有 cronjob 文件,还是仅执行其中的一部分?

Ste*_*ski 19 cron rhel

这是一个红帽企业 Linux 5 系统 (RHEL)。我们使用 CFengine 管理这个系统。

我们有几个 cronjob,它们的运行频率是平时的两倍。我检查了下的 cronjobs /etc/cron.d/,该目录包含名为 的实际脚本host-backup,还包含名为 的 cfengine 备份文件host-backup.cfsaved,如下所示:

/etc/cron.d/host-backup
/etc/cron.d/host-backup.cfsaved
Run Code Online (Sandbox Code Playgroud)

此操作系统是执行 处的所有文件/etc/cron.d/*,还是仅执行匹配特定模式的文件。我可以配置这个吗,这是在哪里定义的?

我在 RHEL 或 CentOS 文档中找不到这个答案。

Gil*_*il' 20

(如果你为 Red Hat 支持付费,你应该问他们这类问题。这正是你付费的原因!)

RHEL5crontab(5)手册页

如果存在,则该/etc/cron.d/目录的解析类似于 cron 假脱机目录,不同之处在于其中的文件不是特定于用户的,因此使用/etc/crontab语法读取(用户在第 6 列中明确指定)。

(有没有更简单的方法来阅读 RHEL 手册页而无需访问它?至少这样我可以看到这一段是 Red Hat 补丁的一部分,所以它不是标准的 Vixie Cron 4.1 功能。)

查看源代码,我看到以下文件被跳过:.*, #*, *~. *.rpmnew, *.rpmorig, *.rpmsave. 所以是的,*.cfsaved除了原件之外,您的文件也会被阅读。


mls*_*ter 6

我认为您很难找到答案的原因是它不是 Red Hat 特定的问题。您所看到的问题是标准功能的一部分cron- 您标识的目录中的每个文件都被自动视为单独的作业

因此,对您的问题的简短回答是“是的,所有文件都已执行”。这不是我认为可以配置的。

  • cron 有不同的实现。Debian 和 Ubuntu 随附 Vixie Cron (3.0),`cron.d` 的处理在其 [手册页](http://manpages.ubuntu.com/manpages/lucid/man8/cron.8.html) 中有描述)。RHEL 随附 ISC cron 4.1(同一项目的一个分支)和手册页(至少 [on CentOS](http://grisha.biz/cgi-bin/man?query=cron&sektion=8&manpath=CentOS+release +5.3+%28Final%29&format=html)) 没有提到 `cron.d`。 (2认同)

Ste*_*ski 6

以下是来自 RedHat 支持的回答:

请注意,cron.d 目录下的所有文件都会被检查和执行,它基本上是 /etc/crontab 文件的扩展名(即,如果将条目添加到 /etc/crontab 文件中,则效果相同)

所以,要回答我的问题“这个操作系统是执行 /etc/cron.d/* 中的所有文件,还是只执行匹配特定模式的文件。我可以配置它吗,它在哪里定义?”

执行 /etc/cron.d/* 下的所有文件(尽管根据源文件中的文档,某些文件扩展名,例如 .rpmsave、*~ 等似乎被忽略了)。无法通过配置文件进行配置。如果重新编译源代码,则可能可以进行配置。此行为在源代码包含的文档中有所提及,但未出现在我能找到的任何手册或手册页中。