从这个厨师食谱cron在哪里?

我已经添加了,并成功地设置和部署一个实例与这个配方:

cron "haproxy_log" do command "logrotate /etc/logrotate.d/haproxy" minute '15' end

但是,当我看着/etc/crontab我没有看到它在那里。 cron厨师在哪里做cron工作?

当我做sudo crontab -u root -l我看到我的工作。 但是如何在/etc/crontab中看不到呢?

cron不能运行,但是我可以通过执行以下命令来手动运行命令: sudo logrotate /etc/logrotate.d/haproxy – 为什么发生这种情况?

你用sudo crontab -u root -l看到的crontab是用户root的普通用户crontab ,位于:

  • /var/spool/cron/crontabs/root (Debian,Ubuntu,HP-UX,SGI IRIX)
  • /var/spool/cron/root (CentOS,RedHat,RHEL,Fedora,IBM AIX和公司)
  • /var/cron/tabs/root (FreeBSD,OpenBSD,NetBSD)
  • /usr/lib/cron/tabs/root (Mac OS X)

这些文件不应该直接编辑,而应该使用crontab命令。

root的crontab上的命令也总是以root身份运行,

  • 他们有正常的mh dom mon dow command语法
  • 而在系统范围的 /etc/crontab/etc/cron.d/*您还必须指定用户:

     # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. # mh dom mon dow user command 

厨师食谱参考资料cron隐藏了一个暗示:

cron资源需要访问crontab程序,通常是cron。

警告: cron资源只能用于修改crontab文件中的条目。 使用cookbook_file模板资源将crontab文件添加到cron.d目录。 cron_d轻量级资源(可在cron cookbook中find)是pipe理crontab文件的另一种select。

在除AIX和Solaris以外的Unix平台上,Chef使用典型的crontab语法创build一个临时文件,然后将其提供给/usr/bin/crontab命令( Source )。

根据您的操作系统/分布,位置因cron实现而异。 以Debian / Ubuntu为例( man 8 cron ):

cron在它的假脱机区(/ var / spool / cron / crontabs)中searchcrontab文件(以/ etc / passwd中的帐户命名); find的crontabs被加载到内存中。 请注意,不应直接访问此目录中的crontabs – 应使用crontab命令来访问和更新它们。

cron也读取/ etc / crontab,它的格式略有不同(请参阅crontab(5))。 在Debian中,/ etc / crontab的内容被预定义为在/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly和/etc/cron.monthly下运行程序。 这个configuration是特定于Debian的,请参阅下面的DEBIAN SPECIFIC下的注释。

另外,在Debian中,cron读取/etc/cron.d目录中的文件。 cron会像/ etc / crontab文件一样处理/etc/cron.d中的文件(它们遵循该文件的特殊格式,即包含用户字段)。 但是,它们独立于/ etc / crontab:例如,它们不会从中inheritance环境variables设置。 这个改变是特定于Debian的,参见下面的DEBIAN SPECIFIC。

像/ etc / crontab一样,/etc/cron.d目录中的文件也受到监视以进行更改。 通常,系统pipe理员不应使用/etc/cron.d/,而应使用标准系统crontab / etc / crontab。

长话短说:

  1. 目的地是由crontab而不是厨师pipe理的
  2. 最近Debian / Ubuntu crons在2017的典型默认值是/etc/cron.d/<filename>