Я добавил, успешно настроил и развернул экземпляр с этим рецептом:
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
команда.
Команды на root
crontab также всегда запускаются как 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.
Короче говоря:
crontab
не повар /etc/cron.d/<filename>