CRONTAB
Updated: 24 January 1994
Index Return to Main Contents
ИМЯ
crontab — таблицы для управления cron'омОПИСАНИЕ
Файл crontab содержит инструкции для демона cron(8) в общей форме: «запустить эту команду в указанное время, определенной даты». Каждый пользователь имеет свою собственную crontab и команды в любых других заданных crontab будут выполнены для владельцев этих crontab. Uucp и News обычно имеют свои собственные crontab, устраняющие необходимость в явном запуске su(1) как части команды для cron.Пустые строки, лидирущие пробелы и табуляции игнорируются. Строки, у которых первый символ решетка (#) считаются комментариями, и игнорируются тоже. Заметим, что комментарии не допускаются в тех же строках, где расположены команды, так как они будут распознаны как части команды. По этой же причине комментарии не разрешены тех же строках, что устанавливают переменные окружения.
Активная строка в crontab представляет собой либо установку переменной окружения или команду для cron. Установка переменной окружения осуществляется в следующей форме:
имя_переменной = величинагде пробелы вокруг знака равентсва (=) необязательны, и любые последующие пробелы после величины будут поняты как часть величины присвоенной имени_переменной. Строка величина может быть помещена в кавычки (одинарные или двойные) для сохранения пробелов в начале и конце.
Различные переменные окружения устанавливаются автоматически демоном cron(8). SHELL устанавливается в /bin/sh, а LOGNAME и HOME берутся из строки файла /etc/passwd соответствующей собственнику crontab. HOME и SHELL могут быть перекрыты установками в crontab; LOGNAME нет.
(Другое замечание: переменная LOGNAME иногда называется USER в BSD системах… в этих системах USER устанавливается также.)
В добавлении к LOGNAME, HOME, и SHELL, cron(8) проверяет переменную MAILTO если он имеет какие-либо причины отослать почтовое сообщение как результат запуска команды в «этой» crontab. Если MAILTO определена, но пуста (MAILTO=""), то почтовое сообщение послано не будет. В противном случае почта посылается собственнику crontab. Эта переменная полезна если вы решили использовать допустим /bin/mail как вашу почтовую программу вместо /usr/lib/sendmail. /bin/mail не является псевдонимом и UUCP обычно не сможет читать его почту.
Формат команды cron очень похож на стандарт V7, с некоторым количеством совместимых снизу вверх дополнительных возможностей. Каждая строка имеет пять полей времени и поле даты, за которыми следуют имя пользователя, если это системный crontab файл, и команда. Команды запускаются с помощью cron(8) когда поля минута, час и месяц года совпадут с текущим временем и когда одно из полей дня (день месяца, или день недели) совпадут с текущими (смотрите замечание ниже). cron(8) проверяет записи в crontab каждую минуту. Поля времени и даты это:
поле | допустимые значения |
минуты | 0–59 |
часы | 0–23 |
дни месяца | 0–31 |
месяц | 0–12 (или название месяца, см. ниже) |
день недели | 0–7 (0 или 7 — это воскресение, или имена дней недели) |
Поле может содержать звездочку (*), которая всегда обозначает значения от первого до последнего.
Допускается также применение диапазонов чисел. Диапазоны это два числа, разделенные тире. Заданные диапазоны включают в себя значения от первого значения диапазона до последнего. Например, 8–11 для поля «часы» определяет запуск в 8, 9, 10 и 11 часов.
Позволяются также и списки. Список это числа (или диапазоны) разделенные запятыми. Например: «1,2,5,9», «0-4,8-12».
Значения шага можут быть использованы для пропусков в диапазонах. Следуя за диапазоном «/число» определяет что будет пропущено число значений этого диапазона. Например, «0-23/2» может быть использовано в поле часы для назначения запуска команды через час (вариант в стандарте V7 это «0,2,4,6,8,10,12,14,16,18,20,22»). Шаги также доступны после звездочки, так что если вы хотите сказать «каждые два часа», то используйте «*/2».
Для полей «месяц» и «день недели» могут быть использованы имена. Используйте первые три буквы нужного дня или месяца (регистр букв не имеет значения). Диапазоны или списки имен не разрешены.
Поле с номером «шесть» (остаток стоки) определяет команду для запуска. Полная командная порция строки, завершенная переводом строки или символом %, будет выполненна /bin/sh или другим shell'ом определенным в переменной SHELL в crontab. Если знак процента (%) в команде, предваряется обратной косой чертой (\), то он будет заменен на символ перевода строки и все данные после первого % будут посланы для команды как стандартный ввод.
Замечание: День выполнения команды может быть задан в двух полях — день месяца, и день недели. Если оба поля защищены (т.е не являются *), то команда будет запущена, когда любое поле совпадет с текущим временем. Например запись:
30 4 1,15 * 5должна заставить команду запустится в 4:30 по полуночи первого и пятнадцатого каждого месяца плюс в каждую Пятницу.
ПРИМЕР ФАЙЛА CRON
# используйте /bin/sh для запуска команд, не обращая внимание на # то, что написано в /etc/passwd SHELL=/bin/sh # почтовые сообщения слать на имя ‘paul’, не обращая внимания # на то, чей это crontab MAILTO=paul # # запускать пять минут пополуночи, каждый день 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # запускать в 14:15 первого числа каждого месяца 15 14 1 * * $HOME/bin/monthly # запускать в 22.00 каждый день недели, чтобы досадить Joe 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?% 23 0-23/2 * * * echo "запускать в 00:23, 2:00, 4:00 ..., каждый день" 5 4 * * sun echo "запускать в 4:05 каждое воскресенье"
СМОТРИТЕ ТАКЖЕ
cron(8), crontab(1)ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ
Когда задается день недели, то дни и 0 и 7 будут соответствовать воскресенью. BSD и ATT с этим не согласятся.Списки и диапазоны могут сосуществовать в одном и томже поле. «1-3,7-9» будут отвергнуты cron'ом ATT и BSD — они допускают только либо «1-3» либо «7,8,9».
Списки могут включать «шаги», например «1-9/2» соответствует «1,3,5,7,9».
Месяцы или дни недели могут быть заданы именами.
В crontab могут быть установлены переменные окружения. В BSD или ATT, окружение управляется дочерними процессами расположенными в одном из /etc/rc.
Вывод команд отсылается почтой хозяину crontab (BSD так не делает), а также может отправлятся кому-либо другому (SysV так не делает), или может быть вообще отключен и не будет отсылаться никому (SysV так не делает).
АВТОР
Paul Vixie <paul@vix.com>
Index
- ИМЯ
- ОПИСАНИЕ
- ПРИМЕР ФАЙЛА CRON
- СМОТРИТЕ ТАКЖЕ
- ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ
- АВТОР