MyTetra Share
Делитесь знаниями!
Настройка Cron, формат конфигурационного файла
Время создания: 31.10.2011 04:51
Текстовые метки: linux, cron, crond
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1320025890eufd5duth7/text.html на raw.github.com

Каждая строка файла настройки планировщика имеет следующий формат:


* * * * * {пользователь} выполняемая_команда

- - - - -

| | | | |

| | | | ----- 5. День недели (0 - 7) (Воскресенье =0 или =7)

| | | ------- 4. Месяц (1 - 12) (можно три буквы из названия месяца,

| | | регистр не имеет значения от jan до dec)

| | --------- 3. День (1 - 31)

| ----------- 2. Час (0 - 23)

------------- 1. Минута (0 - 59)


В примере показан формат одной из строки таблицы, состоящий из 7 полей. Первые 5 полей - это значения, задающие периодичность выполнения команды (расписание). 6-e поле присутствует только в таблицах /etc/crontab и др. расположенных в каталоге /etc/cron.d/. 7-е поле есть сама запускаемая команда.


Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария. Со всей оставшаяся частью строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab. Знак процента (`%' ) в команде (если он не экранирован обратной косой чертой (`\' ) ) будет соответствовать символу перевода строки и все данные после первого `%' будут посланы для команды на стандартный ввод.


Для указанных выше первых 5 полей, можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.


Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.


Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.


Косая черта (/) используется для определения шага значений. Если после диапазона указать /<целое_число>. Например, значение минут 0-59/2, определяет, что задание будет запущено каждую вторую минуту.


Вся оставшаяся часть строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab Знак процента (`%' ) в команде (если он не экранирован обратной косой чертой (`\' ) ) будет соответствовать символу перевода строки и все данные после первого `%' будут посланы для команды на стандартный ввод.


Пример crontab-файла:


# выполнить команды hello каждый понедельник в 3:30

30 3 * * mon hello

# выполнить команду hello в первый день каждого месяца в 4:10

10 4 1 * * hello

# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily

5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1

# каждый рабочий день в 22:00

0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john

23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."

5 4 * * sun echo "Выполняется в 4:05 в воскресенье"

0 0 1 1 * echo "С новым годом!"

15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"

0-59 * * * * echo "Выполняется ежеминутно"

# каждые 5 минут

*/5 * * * * echo "Прошло пять минут"


Внимание! чтобы изменения, внесенные в файл конфигурации начали работать, демону крона надо дать команду перечитать конфигурацию. Делается это так:


service crond reload


или так:


service cron reload


- т. к. в разных Linux-системах принято разное название демона cron.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования