Использование cron » Записки старого сисадмина Использование cron » article » Записки старого сисадмина

Использование cron

12 мая 2008 Версия для печати Версия для печати

Сегодня я хочу рассказать Вам о том, как пользоваться утилитой cron. Понимаю, что многие скажут - "Нафига это надо. Читайте маны. Уже много раз написано.", но все таки, думаю, что многие еще не разобрались с этим делом, да и еще одна дока лишней не будет.

Cron - это утилита, которая позволяет запускать некоторые скрипты (задания) в определенное время (не только единоразово, но и периодически).  Таким образом, cron - это своего рода планировщик заданий.

Конфигурируется он довольно просто. Есть основной файл crontab (обычно располагается в каталоге /etc), где прописываются задания, которые будут выполняться. По умолчанию он имеет вид:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

При детальном рассмотрении мы видим упоминание каталогов "/etc/cron.*". Давайте пока разберемся с синтаксисом времени, а уж потом вернемся к каталогам. Синтаксис используется следующий:

Минуты Часы День_месяца Месяц День_недели Пользователь Команда

Т.е. запись

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

буквально означает следующее - в 17 минут каждого часа (знак *) и каждого дня запускать команду "cd / && run-parts --report /etc/cron.hourly" от имени пользователя root.

Отсюда становится понятно назначение каталогов:

  • cron.hourly - каталог, содержащий задания, запускаемые ежечасно.
  • cron.daily - каталог, содержащий задания, запускаемые ежедневно.
  • cron.weekly - каталог, содержащий задания, запускаемые еженедельно.
  • cron.monthly - каталог, содержащий задания, запускаемые ежемесячно.

В данном случае, в качестве заданий используются запускаемые скрипты или программы, которые размещают в этих каталогах.

Для примера поставим задачу. Нам необходимо запускать скрипт /home/user/script.sh каждые 3 часа от имени пользователя "user". Формируем базовую строку:

* * * * * user /home/user/script.sh

Теперь ее исправляем до нужного нам состояния, т.е. указываем, что скрипт будет выполняться каждые 3 часа в 0 минут часа каждую субботу и воскресенье:

0 */3 * * 0,6 user /home/user/script.sh

Или же можно записать иначе:

0 0,3,6,9,12,15,18,21 * * 6,7 user /home/user/script.sh

что, в принципе, равнозначно. Вы наверное спросите почему опечатка в днях недели. Я отвечу, что воскресенье может указываться как 0 (американский стандарт), так и 7 (Российский стандарт).

Для более полной картины приведу вырезку из "man 5 crontab":

field          allowed values
-----          --------------
minute         0-59
hour           0-23
day of month   1-31
month          1-12 (or names, see below)
day of week    0-7 (0 or 7 is Sun, or use names)

Думаю, что переводить этот кусок особого смысла не имеет, т.к. и так все понятно.

Кроме того, есть еще один каталог, который может быть весьма полезен пользователям, у которых есть SSH-доступ на сервер, но нет root-прав. Это каталог /var/spool/cron, где располагаются индивидуальные пользовательские задания. На пример, Вам необходимо добавить в крон задание, но прав на правку crontab-файла нет. Создаем в домашнем каталоге (или любом другом) файл cron примерно такого содержания:

SHELL=/bin/bash
MAILTO=user
0-59 * * * * /home/user/script.sh

Выполняем команду:

crontab /home/user/cron

в результате чего в каталоге /var/spool/cron появляется файл с именем пользователя, в данном случае user, и содержимым файла /home/user/cron.

Для просмотра списка заданий можно использовать команду "crontab -l", для удаления - "crontab -r", для правки - "crontab -e".

Вот собственно и все. Не все так сложно, как кажется на первый взгляд.

Популярность: 61% [?]




И не забываем подписываться на RSS. ;)

3 комментариев, “Использование cron”

  1. selivan |

    Поставь fcron, на cron потом смотреть не захочестя

  2. Silver Ghost |

    Хм… Спасибо. Посмотрю и озвучу мнение в следующем подкасте.

  3. Дмитрий Ожегов |

    С етой прогой еще не сталкивался,спасибо буду знать на будущее!!!

Комментировать