Вопрос или проблема
Системный crontab:
/etc/crontab
Root crontab:
sudo crontab -u root -e
Какой способ предпочтительнее? Так как все они запускают задачи с административными привилегиями.
/etc/crontab
— это системный crontab.
Формат /etc/crontab
выглядит так:
# m h dom mon dow user command
* * * * * someuser echo 'foo'
в то время как crontab -e
используется для каждого пользователя. Стоит отметить, что без аргумента -u
команда crontab обращается к crontab текущего пользователя. Вы можете использовать crontab -e -u <username>
, чтобы редактировать crontab конкретного пользователя.
Обратите внимание, что в crontab для пользователя отсутствует поле ‘user’.
# m h dom mon dow command
* * * * * echo 'foo'
Может возникнуть путаница из-за того, что у root также существует свой собственный crontab. Например, crontab -e -u root
не редактирует /etc/crontab
. См. Настройка cron.
В дистрибутивах Linux crontab для пользователей обычно хранятся в: /var/spool/crontabs/<username>
Ссылки
https://superuser.com/questions/290093/difference-between-etc-crontab-and-crontab-e
/etc/cron.d (и его аналоги cron.daily/weekly/monthly) предпочтительнее для всех системных crontab. Вам не нужно изменять /etc/crontab.
Важно разделять записи cron на несколько файлов в зависимости от их функциональности, если вы планируете управлять или автоматизировать процессы. Файлы в /etc/cron.d могут легко управляться пакетами или инструментами управления конфигурациями, такими как puppet и chef. Crontab для root, напротив, практически недоступен для управления чем-либо, кроме человека.
Таким образом, для системных задач используйте /etc/cron.*. Если есть что-то, что вы хотите, чтобы выполнял root, используйте crontab для root. /etc/crontab следует оставить неизменным и поддерживать пакетом.
.
Ответ или решение
Системный кронтеб (/etc/crontab) и кронтеб для пользователя root (sudo crontab -u root -e) – это инструменты, используемые для автоматизации выполнения задач на сервере. Каждый из них имеет свои особенности и предпочтения в использовании, особенно когда речь идет о заданиях, выполняемых с административными привилегиями.
Системный кронтеб (/etc/crontab):
Системный кронтеб – это система планировщика задач, которая позволяет автоматически выполнять команды от имени различных пользователей в заданное время. Формат его записи включает в себя поля для указания пользователя:
# m h dom mon dow user command
* * * * * someuser echo 'foo'
Преимущества использования /etc/crontab:
- Удобство управления: Этот файл может быть полезен, если вам необходимо централизованно управлять заданиями для всех системных пользователей.
- Гибкость: Вы можете назначать задания от имени любого пользователя, указав его в поле user.
- Централизация: Изменения в /etc/crontab распространяются сразу на все задачи, что облегчает администрирование.
Крнтаб пользователя root (sudo crontab -u root -e):
Этот тип кронтаба отвечает исключительно за задания root. Формат его записи не требует указания пользователя, поскольку все команды выполняются от имени root:
# m h dom mon dow command
* * * * * echo 'foo'
Преимущества использования crontab для root:
- Изоляция и безопасность: Этот кронтеб отдельный, и изменения, внесенные в него, остаются в пределах пользователя root.
- Простота управления: Использование этого метода может быть проще для задач, специфичных для root, поскольку нет необходимости манипулировать системным файлом /etc/crontab.
- Аутентичность: Все задачи выполняются с максимальными привилегиями, что может быть критически важным для определенных администрационных задач.
Заключение и рекомендации:
Инструменты /etc/cron.d и его аналоги (cron.daily, cron.weekly, cron.monthly) являются предпочтительными для системных задач, так как они более управляемы через инструменты автоматизации конфигурации, такие как Puppet или Chef. Это позволяет избежать человеческой ошибки и обеспечивает лучшее управление пакетами.
Использование кронтеба пользователя root оправдано, если задание касается исключительно задач root и должно выполняться с максимальными привилегиями. /etc/crontab, наоборот, рекомендуется оставить на усмотрение системы и управлять им через пакеты для минимизации конфликтов и ошибок.
Каждый метод имеет свое предназначение, и выбор зависит от конкретных задач и требований управления системой. Важно оценить цели, безопасность и простоту администрирования при принятии решения об использовании той или иной формы планировщика задач.