Если мне нужен cronjob, работающий на системном уровне (то есть не специфичный для определенного пользователя), как вы предлагаете мне его создать?
- работает
crontab -e
как корень - добавив его в
/etc/crontab
- создание файла, определяющего cronjob в
/etc/cron.d/
- создание файла, определяющего cronjob
/etc/cron.*ly/
(но только если такой интервал времени соответствует моим потребностям)
Что меня больше всего беспокоит: какое из этих решений может быть перезаписано обновлением системы ?
Кроме того, я полагаю, что если работа долгая, я должен поместить ее в отдельный файл сценария , например, в /root/bin/
. Вы согласны?
Ответы:
Не использовать
crontab -e
Я бы не поставил это
crontab -e
как root. Это, как правило, менее очевидно для других администраторов и может потеряться со временем. Помещая их,/etc/crontab
вы можете точно указать время, которое вы хотите, чтобы они выполнялись, а также вы можете указать другого пользователя.Альтернативные локации
Если вам не нужно запускать сценарий от имени другого пользователя и / или вы просто хотите, чтобы сценарий запускался еженедельно, ежедневно и т. Д., То в нескольких дистрибутивах есть каталоги, в которые можно поместить сценарии, которые будут автоматически обрабатываться в определенное время.
Например, в дистрибутивах на основе Redhat:
Я часто раз поставил crons на уровне системы , что я хочу работать в то время , определенной в
/etc/cron.d
вместо/etc/crontab
, особенно , если они более сложные сценарии.Я предпочитаю использовать каталоги,
/etc/cron*
потому что они гораздо более очевидные места, которые другие системные администраторы будут знать, и файлами здесь можно управлять с помощью установок пакетов, таких какrpm
и / илиapt
.Защита записей
Любые из упомянутых мной каталогов предназначены для размещения сценариев, которые не будут уничтожены менеджером пакетов. Если вы беспокоитесь о защите записи в crontab, то я бы определенно не поместил ее в
/etc/crontab
файл, а вместо этого поместил бы ее как правильный скрипт в один из/etc/cron*
каталогов.источник
Я бы выбрал № 4. Это позволяет системным настройкам выбирать, когда запускать задание, и обычно они хорошо справляются со своей задачей «запускать, когда не занят». Изменение системного планировщика cron также автоматически влияет на время выполнения скрипта.
Недостатком является то, что у вас нет прямого контроля, когда он работает. Если вам нужно больше прямого контроля, тогда используйте # 1.
1 реже всего будет перезаписано обновлением системы. Хотя 3 и 4 должны быть довольно безопасными. все зависит от того, как вы обновляете. Ваш дистрибутив может обновляться как угодно, но только 2, как правило, могут быть перезаписаны.
Наконец, я бы поместил скрипты в / usr / local / bin. Это «нормальное» место, куда я помещаю общесистемные вещи, которыми не управляет менеджер пакетов дистрибутива. / root / bin также допустим, если он будет запускаться только пользователем root. Однако это все в основном вкус.
источник
Любое из вышеперечисленного будет работать, и ни одно из вышеперечисленного не должно быть перезаписано обновлениями. Фактический выбор сводится к мнению - у любых трех разных людей часто будет по крайней мере два, если не три разных ответа.
источник