我在 cron 手册页上阅读:
Cron 搜索
/var/spool/cron
以帐户命名的 crontab 文件/etc/passwd
;找到的 crontab 被加载到内存中。Cron 还搜索 目录/etc/anacrontab
中的任何文件,这些文件/etc/cron.d
具有不同的格式(请参阅 参考资料crontab(5)
)。Cron 检查所有存储的 crontab 并检查每个作业以查看它是否需要在当前分钟内运行
然后它说:
/etc/crontab
系统 crontab。现在该文件默认为空。最初它通常用于运行每日、每周、每月的作业。默认情况下,这些作业现在通过读取/etc/anacrontab
配置文件的 anacron 运行。有关anacrontab(5)
更多详细信息,请参阅。
好的,我很清楚如果/etc/crontab
为空会发生什么。
我的问题是:如果/etc/crontab
存在的话,什么时候读?
注意:手册页来自 CentOS 8。
答案取决于
cron
您感兴趣的确切变体。在 Debian 中,
cron
守护进程被记录为/etc/crontab
在必要时重新加载:实际上,主循环
cron
在每次迭代时都会重新加载所有数据库(只有在文件发生更改时才会加载)。在 Fedora 和衍生产品(包括 CentOS)中,
cron
行为类似,inotify
如果可用,还需要额外的帮助。如果您有一个完全记录文件的
cron
实现crontab
,那么您必须使用历史UNIX
变体。30 多年来,该cron
实用程序的唯一有效接口是通过crontab
命令。这就是为什么
POSIX
根本不记录该cron
实用程序的原因,因为它是特定于实现的细节。因此,请确保行为正确,并且仅用于
crontab -l
列出 crontab 或crontab -e
编辑 crontab。如果您编辑 crontab,该
crontab
命令会将 crontab 文件存储在系统特定位置,并通知cron
实用程序 crontab 已更改,需要重新读取。