为什么crontabs不存储在用户主目录中?


35

我很好奇:为什么crontabs存储在/ var中而不是用户的主目录中?隔离这些文件进行升级非常费劲,但我怀疑这是合乎逻辑的原因...

Answers:


41

我能想到的几个原因:

  • 在公司环境中,您可以拥有成千上万的用户。如果是这样,cron将不得不每分钟扫描一次每个用户目录,以检查crontab文件(是否已创建,删除或修改)。
    通过将它们放在一个位置,无需进行密集扫描。
  • 主目录可能并不总是可用。如果主目录是autofs挂载,则可能不会挂载。用cron每隔一分钟检查一次它们将导致它们被安装,并防止它们由于不活动而被卸载。同样,如果主目录已加密并使用用户密码解密,则cron将无法访问主目录,除非用户已登录并解密/挂载了该目录。
  • 主目录可能在主机之间共享。如果主目录是网络共享,则同一主目录将出现在多个主机上。但是您可能不希望您的cron作业仅在其中一个主机上运行在每个主机上。

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.