何时检查/etc/crontab?

何时检查/etc/crontab?

我在 cron 手册页上读到:

Cron 搜索/var/spool/cron以 中的帐户命名的 crontab 文件/etc/passwd;找到的 crontab 被加载到内存中。 Cron 还搜索 目录中具有不同格式的/etc/anacrontab 任何文件(请参阅 参考资料)。 Cron 检查所有存储的 crontab 并检查每个作业以查看它是否需要在当前分钟运行/etc/cron.dcrontab(5)

然后它说:

/etc/crontab系统定时任务。现在该文件默认为空。最初它通常用于运行每日、每周、每月的作业。默认情况下,这些作业现在通过 anacron 运行,它读取/etc/anacrontab配置文件。请参阅anacrontab(5)了解更多详情。

好的,我很清楚如果/etc/crontab为空会发生什么。

我的问题是:如果无论如何都/etc/crontab存在,什么时候读取它?

注意:手册页来自 CentOS 8。

答案1

答案取决于cron您感兴趣的具体变体。

在 Debian 中,cron守护进程是记录为/etc/crontab在必要时重新加载

与 一样/etc/crontab,监视目录中的文件/etc/cron.d是否发生更改。

确实,主循环cron在每次迭代时重新加载所有数据库(仅当文件发生更改时才会发生加载)。

在 Fedora 及其衍生品(包括 CentOS)中,cron 行为类似,并提供额外帮助(inotify如果有)。

答案2

如果您有cron一个记录crontab文件的实现,那么您必须使用历史UNIX变体。 30 多年来,该cron实用程序的唯一有效接口是通过crontab命令。

POSIX这就是为什么根本不记录该实用程序的原因cron,因为它是一个特定于实现的细节。

因此,请确保行为正确,并且仅用于crontab -l列出 crontab 或crontab -e编辑 crontab。

如果您编辑 crontab,该crontab命令会将 crontab 文件存储在系统特定位置,并通知cron实用程序 crontab 已更改并需要重新读取。

相关内容