Включение файла в конфиг crontab?

8

Я пытаюсь поместить конкретный проект crontab в репозиторий кода, чтобы упростить обновление заданий cron на всех серверах при развертывании.

Можно ли включать файлы в конфиг crontab? Что-то вроде

* * * * * execsomething /blablabla/blah/
* * * * * onemore /blablabla
@include '/home/user/project/crontab.conf'
Kirzilla
источник

Ответы:

8

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

Сценарии (не задания в формате cron), размещенные в следующих каталогах, будут выполняться с заданными интервалами. Обратите внимание, что частота гарантирована, но точное время ее работы может не совпадать. Для большинства пользователей этих каталогов достаточно:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

Задания в формате cron (как в приведенных выше примерах), помещенные в следующий каталог, будут выполняться cron в указанное время. Обратите внимание, что в дополнение к обычным записям перед заданием необходимо указать и пользователя задания. Для пакетов и дистрибутивов этот метод является лучшим способом распространения cronjobs:

/etc/cron.d

Пример команды в формате cron.d:

1 1 * * * root echo "serverfault is awesome" > /dev/null
Боско
источник
Может ли имя пользователя быть переменной? У меня есть несколько команд, которые должны запускаться от одного и того же пользователя, но могут быть разными пользователями в разных средах. Могу ли я сделать что-то вроде $ USER = joeblow 1 1 * * * $ USER echo "serverfault is a awesome"> / dev / null
Jay K
Зависит от демона cron. Cronie не допускает переменные окружения, например.
Боско
4

Не настолько, насколько я знаю; вот для чего /etc/cron.d.

Как указал Боско, есть и /etc/cron.{hourly,daily,weekly,monthly}каталоги, но задания там могут выполняться только как root (если вы явно не используете их /bin/suдля изменения EUID). У заданий /etc/cron.dесть дополнительное поле, в котором указывается пользователь, от имени которого они запускаются, и то, как ваш вопрос содержит /home/userпуть, заставляет меня думать, что вы хотите, чтобы эти задания могли запускаться как произвольные пользователи.

Безумный Шляпник
источник