Демон
занимается планированием и выполнением команд, запускаемых по определенным датам и в определенное время.
Команды, выполняемые периодически, указываются в файлах
crontab(5).
Команды, которые должны быть запущены лишь однажды, добавляются при помощи
at(1)
и
batch(1).
Как правило, демон
запускается из командного скрипта
/etc/rc
Так как
может выполнять команды от имени пользователя,
он должен быть запущен как можно позже при запуске системы и как можно ближе к моменту, когда разрешается вход в систему.
загружает файлы
crontab(5)
и
at(1)
при запуске, а также в случае, если командами
crontab(1)
и
at(1)
были внесены какие-то изменения.
Кроме этого, раз в минуту
проверяет время модификации системного файла crontab
(/etc/crontab
)
набора пользовательских crontab
(/var/cron/tabs
)
и набора пользовательских at
(/var/cron/atjobs
)
Если время модификации файлов изменилось, файлы загружаются снова.
Вывод исполняемой команды отправляется пользователю, указанному в переменной окружения
MAILTO ,
как указано в файле
crontab(5).
Если переменная
MAILTO
не определена (или если это задача
at(1)
или
batch(1)
), то сообщение отправляется владельцу задачи.
Сообщение не отправляется, если команда не выводит какой-либо информации, или если
переменная окружения
MAILTO
является пустой строкой.
Исключением являются задачи
at(1)
или
batch(1)
созданные с флагом
-m
В этом случае, сообщение будет отправлено даже если задача ничего не выводит.
Переход на летнее или зимнее время, прочие изменения времени
Локальные изменения времени меньше чем на 3 часа (например, переход на
летнее или зимнее время) обрабатываются специальным образом.
Это относится только к задачам, которые запускаются в определенное время или периодом более одного часа.
Задачи, которые выполняются чаще, исполняются как обычно.
Если время было переведено вперед, задачи, которые должны были быть выполнены в течение пропущенного интервала, будут запущены немедленно. И наоборот, если время было переведено назад, принимаются меры для предотвращения запуска задачи дважды.
Изменения времени более чем на 3 часа считается коррекцией времени или временной зоны, и новое время начинает использоваться немедленно.
Доступны следующие флаги:
-l средняя_загрузка
Если текущая средняя загрузка системы больше, чем
средняя_загрузка
задачи
batch(1)
не будут запущены.
По умолчанию используется значение 1.5.
Чтобы разрешить выполнение задач
batch(1)
вне зависимости от загрузки системы, можно использовать значение 0.0.
-n
По умолчанию,
отсоединяется от текущей консоли и становится демоном.
Флаг
-n
предотвращает это и заставляет cron работать в интерактивном (foreground) режиме.
-x отладочные_флаги
Если
был собран с поддержкой отладки, некоторое флаги позволяют узнать, что
делает в данный момент.
Следующие флаги могут быть указаны:
ext
показывает расширенную отладочную информацию. Используется в комбинации с другими отладочными флагами для получения дополнительных данных.
sch
печатает информацию, относящуюся к планированию заданий.
proc
печатает информацию, относящуюся к запущенным процессам.
pars
печатает информацию, относящуюся к синтаксическому анализу файлов
crontab(5).
load
выводит сообщение при загрузки баз данных.
misc
показывает дополнительную отладочную информацию.
test
тестовый режим (не выполнять команды на самом деле).
Может быть указано несколько флагов, разделенных запятыми
(So , Sc
)
Вне зависимости от того, какие флаги были указаны, флаг
-x
заставит
оставаться в интерактивном (foreground) режиме и не позволит ему становиться демоном.
СИГНАЛЫ
SIGHUP
Заставляет
закрыть и вновь открыть файл журнала.
Это полезно в скриптах ротации файлов журналов.
На
Ox это не работает, так как
cron
пишет в журнал при помощи
syslog(3).
Все файлы
crontab(5)
не должны быть доступны для чтения никому, кроме владельца файлов,
включая
/etc/crontab
На практике это означает, что режим доступа для файлов должен быть установлен в 0600.
Это ограничение автоматически устанавливается
crontab(1),
но если используется
/etc/crontab
то на этом файле режим должен быть установлен вручную.