Должен ли я использовать cron.hourly или crontab?

9

Кажется, что все предложения по использованию / планированию awstats сделаны через crontab, как таковые: 0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null(запуск awstats ежечасно).

Однако, если я проверю crontab -l, он говорит, что crontab пуст для моего пользователя.

Однако, когда я проверяю /etc/cron.hourly, у меня есть файл awstats со следующим:

#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now         -configdir="/etc/awstats"           -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

Просто чтобы вы знали, что мои awstats обновляются нормально, они создают свои отчеты, и все хорошо.

Создает ли команда crontab запись в указанной папке cron? (т.е. cron.hourly или cron.daily и т. д.)? Или они не связаны? Если они связаны, почему мой пользователь без записи в crontab?

газировка
источник

Ответы:

13

crontab -eэто традиционный способ создания crontab. Я нахожу это неловким и старомодным, но люди все еще используют это.

/etc/cron.hourly, В том числе cron.daily, cron.weeklyи /etc/cron.dт.д. предоставляется в большинстве дистрибутивов Linux , потому что они удобны и хорошо работают с инструментами автоматизации , как пакет-менеджеры и системы управления конфигурацией. Менеджеру пакетов очень просто перетащить файл по /etc/cron.hourly/fooсравнению со сценарием редактирования существующего crontab. Редактирование файла программным способом с помощью менеджера пакетов может привести к его повреждению, добавлению повторяющихся записей, удалению неправильной строки, искажению комментариев и т. Д. См. Раздел «Редактирование файлов считается опасным» для некоторых обсуждений, поскольку эта проблема уже давно существует.

Создает ли команда crontab запись в указанной папке cron?

Номер /etc/cron.daily/fooсоздается менеджером пакетов или вручную. Он не создается при запуске команды crontab. crontab -eсоздаст crontab /var, например /var/spool/cron/root.

Я предпочитаю /etc/cron.$period/fooи /etc/cron.dпотому, что эта иерархия аккуратна и организована, и ее легко написать для моей системы управления конфигурациями. /etc/crontabтакже доступен в Linux, но он немного монолитный и трудно редактируется программно. Такие системы, как поддержка FreeBSD /etc/crontabи /etc/periodic.

Стефан Ласевский
источник
1
Спасибо за ваш ответ, я тоже его предпочитаю, так как я привык сбрасывать файлы конфигурации в папки .d (т.е. conf.d и т. Д.)!
газированный напиток
Я могу только согласиться с этим. Я также предпочитаю использовать системные, /etc/crontabкогда речь идет о запуске системных тиков, вместо использования корневого crontab. Таким образом, можно легко узнать, что такое система, не копаясь в crontab каждого пользователя.
Spack
1
Я согласен с этим ответом. Возможно, стоит упомянуть некоторые другие отличия: /etc/cron.$period/ содержит самодостаточные сценарии, которые запускаются пользователем root. OTOH /etc/cron.d/ содержит включаемые файлы в crontab -eформате. Наконец, / etc / cron * предназначен для запуска сценариев с правами root, но crontab -eдоступен для всех пользователей.
Нильс Тёдтманн
Команда crontab -eнеудобна по умолчанию. Поэтому я создал скрипт с именем, cteкоторый выполняет две команды: export EDITOR=geditи crontab -eс редактором стало легче работать.
SDsolar