Я настраиваю регулярные задачи обслуживания системы, которые должны запускаться от имени пользователя root. Я планирую использовать версию cron, которая поставляется с Ubuntu 14.04 LTS по умолчанию.
Я вижу, что предыдущий администратор (который с тех пор покинул компанию) редактировал / etc / crontab напрямую. Однако я понимаю, что другим возможным подходом было бы использовать его crontab -e
как root. Есть ли веские аргументы в пользу использования одного или другого, или это зависит от предпочтений?
linux
cron
ubuntu-14.04
marcv81
источник
источник
Ответы:
Может быть полезно отметить, что задания в персональном crontab (
crontab -e
) всегда выполняются от имени их владельца, где/etc/crontab
содержится дополнительное обязательное<user>
поле, позволяющее администратору настроить задание для запуска от имени пользователя без полномочий root.Редактирование системного crontab или настройка личного crontab для root, вероятно, немного более переносимы, не специфичны для определенных дистрибутивов Linux и, возможно, более удобны для обслуживания, так как все задания в одном файле, но:
Лично я предпочитаю третий вариант : для каждого запланированного падения
/etc/cron.d/
с фрагментом cron/etc/cron.[hourly |daily |weekly |monthly]
каталоге.Это проще для сценария (вы можете просто создавать / перезаписывать / удалять такие файлы, и вам не нужно копаться в содержимом одного файла crontab), и это хорошо работает с инструментами управления конфигурацией, и это то, что менеджеры пакетов уже в любом случае
Задания / скрипты в
/etc/cron.[hourly |daily |weekly |monthly]
всегда выполняются как root, где фрагменты cron/etc/cron.d/
позволяют как настраивать расписание, так и запускать от имени другого пользователя с тем же обязательным<user>
полем, что и в/etc/crontab
.источник
/etc/crontab
заключается в том, что слияние потребуется при каждом обновленииcron
пакета. У вас нет этой проблемы, если вы просто добавляете новый файл в один из/etc/cron.*
каталогов./etc/cron.[hourly |daily |weekly |monthly]
содержатся исполняемые файлы, в то время как/etc/cron.d
хранятся crontabs. Кроме этого +1.Насколько я помню, у
crontab -e
него есть дополнительное преимущество, заключающееся в том, что он проверяет синтаксис crontab перед его установкой и будет выдавать ошибку и восстанавливать предыдущий, если вы допустили ошибку. Таким образом, все, что раньше работало, внезапно не остановится, если вы ошибетесь в синтаксисе. Я думаю, что лучше всего использовать утилиты, такие как запуск,visudo
а не редактирование/etc/sudoers
напрямую.источник
/etc/crontab
строку с именем пользователя в 6-м столбце). - Хотя я хотел бы утверждать, что использование интерактивных инструментов не является «наилучшей практикой» , вам следует автоматизировать работу с такими инструментами, как Puppet / Salt / Ansible и т. Д., И вам больше не следует настраивать серверы вручную. С другой стороны, если вы олдскульный, то действительно используйте свои инструменты.Это действительно вопрос стиля, есть причина, по которой ОС предлагает несколько методов. Просто будьте последовательны и не смешивайте и не совмещайте, если вы не хотите никого запутывать (или себя после некоторого времени, не связанного с системой) - если трудно увидеть, какие задачи на самом деле запланированы для всего хоста, это имеет тенденцию кончаться неприятными сюрпризами.
источник
Чтобы быть уверенным в добавлении задания cron, которое требует определенных прав пользователя, я лично использую следующую команду:
Вы
sudo
тоже можете добавить .Как сказал @rackandboneman, нет необходимости связываться с файлами /etc/cron.d/. Если речь идет о заданиях пользователя cron, используйте функции
crontab
команды.источник