В чем разница между cron.d (как в /etc/cron.d/) и crontab?

18

В чем главное отличие каталога cron.d (как в /etc/cron.d/) и crontab?

Насколько я понимаю, можно создать файл, подобный ему, /etc/cron.d/my_non_crontab_cronjobsи поместить в него все, что захочется, так же, как он мог бы вставить их crontabчерез via crontab -e.

Так в чем же главное отличие?

Arcticooling
источник
расположение в системе и формат.
Руи Ф Рибейро
Формат? Из 2 примеров, которые я видел, он также имеет синтаксис 5 единиц времени, или я путаю его crontab.
Arcticooling

Ответы:

24

Различия описаны подробно в на cron(8)страницах руководства в Debian. Основное отличие состоит в том, что /etc/cron.dон заполняется отдельными файлами, тогда как crontabуправляет одним файлом на пользователя; Таким образом, проще управлять содержимым с /etc/cron.dпомощью сценариев (для автоматической установки и обновлений), а также легче управлять crontabс помощью редактора (действительно, для конечных пользователей).

Другие важные различия заключаются в том, что не все дистрибутивы поддерживают /etc/cron.d, и что файлы /etc/cron.dдолжны соответствовать определенному количеству требований (помимо того, чтобы быть действительными заданиями cron): они должны принадлежать пользователю root и должны соответствовать run-partsсоглашениям об именах ( только точки). буквы, цифры, подчеркивания и дефисы).

Если вы планируете использовать /etc/cron.d, это, как правило , стоит рассмотреть один из /etc/cron.hourly, /etc/cron.daily, /etc/cron.weeklyили /etc/cron.monthlyвместо этого.

Стивен Китт
источник
1
А для реального примера элементы cron.dобычно добавляются через установку пакета, тогда как различные crontabфайлы полны вещей, созданных соответствующим пользователем. IE, certbotили letsencryptпакет помещает запись в cron.d- до того, как пакет стал доступен, системный администратор (root) добавил бы запись в корневом пользователе, crontabуказывающую на скрипт оболочки / etc. поддерживать сертификаты в актуальном состоянии.
Иваниван
Спасибо, Стивен! Почему вы рекомендуете использовать ежечасные / еженедельные / ежемесячные каталоги cron? И кстати, почему страница руководства называется cron (8), для чего предназначена 8 (страница руководства для crontab с именем crontab (1)).
Arcticooling
1
@Arcticooling, см. Этот вопрос для объяснения(8)
user4556274
Почасовые каталоги и т. Д. Упрощают добавление заданий (нет необходимости выяснять точный синтаксис) и, что более важно, позволяют системе изменять реальное время выполнения в зависимости от обстоятельств; это особенно полезно в системах, которые не всегда включены anacron.
Стивен Китт
1
Недостатком hourly|daily|weekly|monthlyкаталогов является то, что (AFAICT) они всегда запускаются с правами root и не поддерживают работу с меньшими правами.
ilkkachu
5

Я бы сказал , что основным отличием является очевидным: /etc/crontabи /etc/cron.dне могут быть изменены с помощью обычных пользователей, в то время как для каждого пользователя crontabs в /var/spool/cronтом , что crontabправки инструмента, являются. (При условии cron.allowи cron.deny, конечно.) Конечно, в системе, где вы являетесь администратором, вы можете использовать любой из них. В общей системе обычные пользователи могут использовать только одну.

С этим связано дополнительное поле в общесистемных файлах, имя пользователя, под которым выполняется задание.

ilkkachu
источник