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

Сегодня я хочу рассказать Вам о том, как пользоваться утилитой 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”.

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

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

8 коментарів

  • 13.05.2008 18:40, selivan сказал:

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

    • 13.05.2008 20:14, Silver Ghost сказал:

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

      (Обязательно)
      (Обязательно, не публикуется)

      Создавая новую Папку, не считайте себя Создателем, это право Вам дано Админом!
      Купить в рассрочку

      Получить кредит просто! Заполни форму и получи кредит не выходя из дома под 1.99% месяц
      Мы свяжемся с вами в течении часа в рабочее время




      ×
      Купить в рассрочку

      Получить кредит просто! Заполни форму и получи кредит не выходя из дома под 1.99% месяц
      Мы свяжемся с вами в течении часа в рабочее время




      ×
      Яндекс.Метрика