是否可以在 cron.d 下添加目录?

是否可以在 cron.d 下添加目录?

我想将单个 cron 文件划分为单独的逻辑单元,并将它们放在子目录中。cron.d 下的一个文件夹将包含所有与删除某些类型的目录相关的 cron。另一个子目录将包含一个 cron,用于检查某些目录的大小等。

cron.d 下可以有子目录吗?例如:

/etc/cron.d/monitoring/cronshere

/etc/cron.d/removals/cronshere

答案1

不,至少在使用 Vixie cron 的 Debian 上是这样的。cron(8)对 cron.d 目录有这样的说法:

此功能的目的是允许需要比 /etc/cron.{daily,weekly,monthly} 目录更精细地控制其调度的软件包将 crontab 文件添加到 /etc/cron.d。此类文件应以提供它们的软件包命名。文件必须符合与 run-parts(8) 使用的相同命名约定:它们必须仅由大写和小写字母、数字、下划线和连字符组成。

很明显,它不支持递归到子目录。我想其他 cron 守护程序可能支持这一点。

如果使用不支持该功能的 cron 守护程序,我猜大多数 Linux 系统上可能都在这么做,我认为最好的选择可能是一个简单的脚本,它接受一个配置文件树,然后/usr/local/etc/local-crons/将它们连接在一起形成单个文件/etc/cron.d

例如,假设您有以下文件:

  • /usr/local/etc/local-crons/monitoring/foo.cron
  • /usr/local/etc/local-crons/monitoring/bar.cron
  • /usr/local/etc/local-crons/removals/baz.cron
  • /usr/local/etc/local-crons/removals/quux.cron

然后,您的脚本将处理目录树/usr/local/etc/local-crons/并创建以下文件:

  • /etc/cron.d/local-crons-monitoring
  • /etc/cron.d/local-crons-removals

local-crons-monitoringfoo.cron将包含和的内容bar.cron;将包含和local-crons-removals的内容。baz.cronquux.cron

如果您想要更进一步,您的脚本可以非常轻松地检查.cron文件的最后修改时间,并将其与相关文件的最后修改时间进行比较,/etc/cron.d/以查看是否有任何工作要做。因此,这也可以成为 cronned。

我想无论如何我可能都会这么做。

相关内容