Я настраиваю регулярные задачи обслуживания системы, которые должны выполняться от имени пользователя root. Я планирую использовать по умолчанию вариант cron, который поставляется с Ubuntu 14.04 LTS.
Я вижу, что предыдущий администратор (который с тех пор покинул компанию) напрямую редактировал / etc / crontab. Однако я понимаю, что другой возможный подход - использовать crontab -e
как корень. Есть ли убедительные аргументы в пользу того или другого, или все зависит от предпочтений?
Было бы полезно отметить, что задания в личном 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
.
Насколько я помню, crontab -e
имеет дополнительное преимущество, заключающееся в том, что он проверяет синтаксис crontab перед его установкой и выдает ошибку и восстанавливает предыдущий, если вы допустили ошибку. Таким образом, все, что раньше работало, не остановится внезапно, если вы ошибетесь в синтаксисе. Я считаю, что лучше всего использовать такие утилиты, как запуск visudo
а не редактирование /etc/sudoers
прямо.
Это действительно вопрос стиля, потому что ОС предлагает несколько методов. Просто будьте последовательны и не смешивайте и не сопоставляйте, если вы не хотите сбивать с толку кого-либо (или себя после некоторого времени, когда вы не имеете дело с системой) - если трудно увидеть, какие задачи фактически запланированы для всего хоста, это имеет тенденцию чтобы закончиться неприятными сюрпризами.
Чтобы быть уверенным в добавлении задания cron, которое требует определенных прав пользователя, я лично использую следующую команду:
# crontab -u <user> -e
Можете добавить sudo
слишком.
Как заявил @rackandboneman, нет необходимости возиться с файлами /etc/cron.d/. Если речь идет о cron-заданиях пользователя, воспользуйтесь возможностями crontab
команда.