我想将单个 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-monitoring
foo.cron
将包含和的内容bar.cron
;将包含和local-crons-removals
的内容。baz.cron
quux.cron
如果您想要更进一步,您的脚本可以非常轻松地检查.cron
文件的最后修改时间,并将其与相关文件的最后修改时间进行比较,/etc/cron.d/
以查看是否有任何工作要做。因此,这也可以成为 cronned。
我想无论如何我可能都会这么做。