Should I edit /etc/crontab or run crontab -e as root?

I'm setting up regular system maintenance tasks which have to run as root. I plan to use the flavour of cron which comes with Ubuntu 14.04 LTS as the default.

I see the previous admin (who since left the company) edited /etc/crontab directly. However I understand another possible approach would be to use crontab -e as root. Are there any compelling arguments to use one or the other, or is it down to preference?

43
задан 7 September 2016 в 03:37
4 ответа

Может быть полезно отметить, что задания в личном crontab ( crontab -e ) всегда выполняются от имени их владельца, где / etc / crontab содержит дополнительное обязательное поле , позволяющее администратору настроить задание для запуска от имени пользователя без полномочий root.

Редактирование системного crontab или настройка личного crontab для root, вероятно, немного более переносимы, не специфичны для определенных дистрибутивов Linux и, возможно, более удобны для человека для обслуживания, со всеми задачами в одном файл, но:

Лично я предпочитаю третий вариант : для каждой запланированной задачи отбрасывайте либо

  • файл в /etc/cron.d/ с фрагментом cron
  • ] исполняемый файл (сценарий) в соответствующем каталоге / etc / cron. [час | ежедневно | неделя | ежемесячно] .

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

Задания / скрипты в / etc / cron. [Ежечасно | ежедневно | еженедельно | ежемесячно] всегда выполняются от имени пользователя root, а фрагменты cron в /etc/cron.d/ ] позволяет как устанавливать собственное расписание, так и работать от имени другого пользователя с тем же обязательным полем , которое находится в / etc / crontab .

64
ответ дан 28 November 2019 в 19:41

Насколько я помню, crontab -e имеет дополнительное преимущество: он проверяет синтаксис crontab перед его установкой,и будет ошибка и восстановит предыдущее, если вы сделаете ошибку. Таким образом, все, что раньше работало, не остановится внезапно, если вы ошибетесь в синтаксисе. Я считаю, что лучше всего использовать такие утилиты, как запуск visudo , а не редактировать напрямую / etc / sudoers .

15
ответ дан 28 November 2019 в 19:41

Это действительно вопрос стиля, потому что операционная система предлагает несколько методов. Просто будьте последовательны и не смешивайте и не сопоставляйте, если вы не хотите запутать кого-то еще (или себя после некоторого времени, когда вы не имеете дело с системой) - если трудно увидеть, какие задачи фактически запланированы для всего хоста, это имеет чтобы закончиться неприятными сюрпризами.

2
ответ дан 28 November 2019 в 19:41

Чтобы быть уверенным в добавлении задания cron, которое требует определенных прав пользователя, я лично использую следующую команду:

 # crontab -u <user> -e

Вы также можете добавить sudo .

Как заявил @rackandboneman, нет необходимости возиться с файлами /etc/cron.d/. Если речь идет о пользовательских заданиях cron, воспользуйтесь возможностями команды crontab .

2
ответ дан 28 November 2019 в 19:41

Теги

Похожие вопросы