Назад | Перейти на главную страницу

Где крон из этого рецепта от шеф-повара?

Я добавил, успешно настроил и развернул экземпляр с этим рецептом:

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

Но когда я смотрю на /etc/crontab Я не вижу его там. Где cron Chef размещает свои cron-задания?

Когда я делаю sudo crontab -u root -l Я вижу свою работу. Но почему я не вижу этого в /etc/crontab?

Cron не запускается, но я могу запустить команду вручную, выполнив: sudo logrotate /etc/logrotate.d/haproxy - Почему это происходит?

Crontab, который вы видите с sudo crontab -u root -l обычный пользователь crontab для пользователя root, находится в:

  • /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 команда.

Команды на rootcrontab также всегда запускаются как root, т.е.

  • у них нормальный m h 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.
    
    # m h dom mon dow user  command
    

Намек на это также скрыт в Справочнике поваренной книги, Ресурс cron:

В cron ресурс требует доступа к crontab программа, обычно cron.

Предупреждение: В cron ресурс следует использовать только для изменения записи в файле crontab. Использовать cookbook_file или шаблон ресурсы, чтобы добавить файл crontab в каталог cron.d. В cron_d легкий ресурс (находится в cron cookbook) - еще один вариант управления файлами crontab.

На платформах Unix, за исключением AIX и Solaris, Chef создает временный файл, используя типичный синтаксис crontab, а затем передает его в /usr/bin/crontab команда (Источник).

В зависимости от вашей ОС / дистрибутива местоположение зависит от cron реализация. Например, в Debian / Ubuntu (man 8 cron):

cron ищет в своей области спула (/ var / spool / cron / crontabs) файлы crontab (названные в честь учетных записей в / etc / passwd); Найденные crontab загружаются в память. Обратите внимание, что к crontab в этом каталоге нельзя обращаться напрямую - для доступа к ним и их обновления следует использовать команду crontab.

cron также читает / etc / crontab, который имеет немного другой формат (см. crontab (5)). В Debian содержимое / etc / crontab предопределено для запуска программ в /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly. Эта конфигурация специфична для Debian, см. Примечание под DEBIAN SPECIFIC ниже.

Кроме того, в Debian cron читает файлы в каталоге /etc/cron.d. cron обрабатывает файлы в /etc/cron.d так же, как и файл / etc / crontab (они следуют специальному формату этого файла, т. е. включают поле пользователя). Однако они не зависят от / etc / crontab: они, например, не наследуют от него настройки переменных среды. Это изменение относится к Debian, см. Примечание под DEBIAN SPECIFIC ниже.

Как и / etc / crontab, файлы в каталоге /etc/cron.d отслеживаются на предмет изменений. В общем, системный администратор не должен использовать /etc/cron.d/, а должен использовать стандартный системный crontab / etc / crontab.

Короче говоря:

  1. Пункт назначения управляется crontab не повар
  2. типичные значения по умолчанию для последних версий Debian / Ubuntu в 2017 г. /etc/cron.d/<filename>