35 我很好奇:为什么crontabs存储在/ var中而不是用户的主目录中?隔离这些文件进行升级非常费劲,但我怀疑这是合乎逻辑的原因... cron directory-structure home — 马丁·夏娃 source
41 我能想到的几个原因: 在公司环境中,您可以拥有成千上万的用户。如果是这样,cron将不得不每分钟扫描一次每个用户目录,以检查crontab文件(是否已创建,删除或修改)。 通过将它们放在一个位置,无需进行密集扫描。 主目录可能并不总是可用。如果主目录是autofs挂载,则可能不会挂载。用cron每隔一分钟检查一次它们将导致它们被安装,并防止它们由于不活动而被卸载。同样,如果主目录已加密并使用用户密码解密,则cron将无法访问主目录,除非用户已登录并解密/挂载了该目录。 主目录可能在主机之间共享。如果主目录是网络共享,则同一主目录将出现在多个主机上。但是您可能不希望您的cron作业仅在其中一个主机上运行在每个主机上。 — 帕特里克 source 1 +1尽管传统cron上不会每分钟重新扫描一次这些文件;它加载了它们一次,并且仅在信号上重新读取它们。 — goldilocks 2014年 7 但是你对第三点是正确的。根据维基百科的crontab 是最初在$ HOME,直到合并“[贝尔实验室开发者] Unix的AT命令到cron的,移动的crontab文件出用户的主目录(这是不是主机专用),并到一个共同的宿主特异性假脱机目录...”也crontab就是在创建该命令时可能已经解决了重新加载问题。 — goldilocks 2014年 2 @Patrick或当程序使用utimes系统调用时(以假脱机目录路径作为其参数)来设置目录的mtime,这是Vixie cron的crontab命令所执行的。 — Mark Plotnick 2014年 2 除非通过crontab -e进行了编辑,否则早期版本的cron肯定不会接受对用户crontab文件的更改。我过去在Solaris上被这个问题所 2 在Solaris 10(crontab -e为setuid根目录)上,/etc/cron.d/FIFO在用户编辑crontab之后将消息写入。 — Mark Plotnick
cron
上不会每分钟重新扫描一次这些文件;它加载了它们一次,并且仅在信号上重新读取它们。