Используем Cron
 

Данная заметка предназначенна для тех, кто собирается работать с cron, но еще не знает как все это делается. Я в кратце попробую объяснить что такое cron, для чего он нужен да и как вообще с ним работать. Надеюсь, что приведенная тут информация будет интересна и может быть даже полезна :)

Итак что такое cron... cron это программа которая позволяет вам в определенные вами моменты времени производить те или иные действия. Например запускать на выполнение какую либо программу или скрипт, обновлять данные и многое другое. Кстати, сразу же замечу, что cron это кусок от unix , так что не ищите его на Windows :) Там для этой цели используется совершенно другая вещь.

Очень часто cron используется для ротации логов, обновления сайтов выполнения каких нибудь ежеминутных проверок или прочего. Так например я его использую в качестве помощника по архивации своего сайта. Написанный скрипт по архивации всех данных запускается по крону каждую неделю, в следствии чего я избавлен от головной боли 'а не забыл ли я чего архивнуть...'.

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

Для начала можно проверить, а запущен ли вообще этот самый крон ?

Команда ps ax |grep cron должна вывести вам то-то похожее на

407 ?      S  0:00 crond
744 pts/0  S  0:00 grep cron

Т.е. если вы видете crond - то все в порядке, крон на месте.

Иначе вам просто 'повезло', либо на вашей машине не установлен крон, либо функции крона выполняет какой-то другой софт. Хотя такие ситуации необычайно редки.

Так что будем считать что все в порядке, и двинемся далее.
pages::
Как правило все ваши данные (задания) для крона хранятся по адресу /var/spool/cron/ в файле с именем соответствующим вашему логину. Например /var/spool/cron/vadim

Внутри файл выглядит следующим образом:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=vadim HOME=/home/vadim # run-parts 01 * * * * command 02 4 * * * command 
Первые четыре строки просто обозначают настройку параметров окружения и на них не стоит обращать внимание (как в прочем и менять тоже), так как это задается уже самой системой.

А вот на следующие строки внимание уже стоит обратить...

Формат этих строк выглядит следующим образом:

Нужная минута часа для запуска (0-59)
Нужный час дня для запуска (0-23)
Нужный день месяца (0-30)
Нужный месяц года (1-12)
Нужный день недели (0-6)
Выполнимая команда.

Значок * обозначает слово каждый (день, год, месяц, час).

Итак например строка 01 * * * * command будет обозначать запуск программы каждый час в одну минуту.

А строка 02 4 * * * command означает запуск программы каждый день в 4 часа утра в две минуты.

В качестве уже более полного примера могу привести следующее:
01 * * * * echo `date` 'Hi man' >>$HOME/cron.res

Данное задание каждый час будет добавлять в файл cron.res текст Hi man и текущую дату.

Итак мы уже знаем как и по какому принципу работает крон, и поэтому мы сейчас перейдем к заключительному этаму - его редактированию.

Редактирование крона происходит при помощи команды crontab.

crontab -e : войти в режим редактирования
crontab -l : вывести все задания крона
crontab -r : удалить все задания

Со второй и третьей командой обычно все ясно.

С первой командой просто хочу заметить, что редактирование будет простым открытием файла с заданиями через текстовый редактор. Как правило по умолчанию этим редактором является vi.

Но я так и не научился пользоваться этим редактором, поэтому использую pico.

Смену редактора можно провести командой
export EDITOR='pico' а далее и запускать команду редактирования.

Вот вроде-бы и все. Удачного вам крона :)
 
Автор: Vadim Kravciuk
 
Оригинал статьи: http://woweb.ru/publ/66-1-0-263