Close

Cron. Периодические задачи

Часто возникает задача сделать выполнение какого-либо скрипта регулярным, периодическим. Это может быть отправка или проверка почты, периодическое сохранения копий обрабатываемых данных и др. Для этих задач UNIX-системы предлагают нам решение – планировщик задач cron. Напрямую редактировать файлы cron не рекомендуется, для этого существует утилита crontab.

Просмотр и редактирование списка задач

Просмотреть список уже установленных задач можно командой:

Для добавления задачи используется команда:

Просмотрев список задач, мы можем увидеть что-то похожее на это:

В верхней части задаются переменные. PATH указывает на директории поиска программ для выполнения наших задач. В этом случае эти программы — это php и python. В переменной HOME задается домашняя директория пользователя, относительно которой задаются имена самих исполняемых файлов, если не указан полный путь. В нашем случае это, например, start.php.

Далее следует непосредственно список заданий. Каждая строка состоит из значений в 6-ти колонках разделенных пробелами или табуляторами. В первых 5-ти задаются временные параметры а 6-ым является непосредственно выполняемая команда. Для отключения комманды в начале ее необходимо поставить символ #. В нашем случае отключена 4-я команда.

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

MIN HOUR DOM MON DOW CMD

MIN       – 0  —  59  –  Это минуты выполнения задач.
HOUR   – 0  —  23  –  Часы. Задаются в 24-формате.
DOM     – 1  —  31  –  Дни месяца.
MON     – 1  —  12  –  Номер месяца в году.
DOW     – 0  —  7    –  День недели. Вс=0 и =7
CMD     Команда

Для сокращения пути к файлам, можно объявить переменную, например:

Теперь мы можем ее использовать в пути к исполняемым файлам:

 Алиасы кронов

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

@yearly    0 0 1 1 *
@daily      0 0 * * *
@hourly   0 * * * *
@reboot   при загрузке

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

Ошибки при сохранении

Если при попытке сохранить вы получили ошибки, например:

Запустите снова редактирование командой crontab -l, внимательно проверив и исправив ошибки, затем сохраните файл снова.

Крон из файла

Также есть возможность установить список задач из текстового файла. Это удобно при переносе проекта с одного сервера на другой.

Это делается командой:

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

Отправка по почте вывода

Определив переменную MAILTO, вы можете получать сообщения об отработавших задачах:

Если же нужно несколько адресов, то их можно указать через запятую.
На почту будет отправлятьcя весь вывод скриптов.

Перенаправление вывода

Если вам необходимо сохранять в файл вывод программы, то для этого необходимо использовать следующую конструкцию:

Здесь в файл output.txt будет сохраняться все, что выводит скрипт test.php.
Если необходимо дописывать в файл, то используется следующий вариант команды:

Следующая команда заглушает вывод скрипта:

2 означает поток ошибок STDERR.

Следующая конструкция применяется совместно с переменной MAILTO. Таким образом вам в почтовом сообщении придут только возникшие ошибки.

Ошибки кронов

По умолчанию Cron пишет свой лог в файл /var/log/syslog.
Что бы просмотреть сообщения, которые записаны непосредственно кроном можно использовать следующую команду:

Кроны для других пользователей

Чтобы просмотреть кроны других пользователей системы, необходимо войти в систему под пользователем root и использовать команду:

где matthew – имя пользователя.

Почти так же происходит и редактирование задач других пользователей, вместе ключа -l используется -e:

Графический интерфейс

Для удобства использование планировщика на рабочих машинах возможно использовать графический интерфейс для управления периодическими задачами.

Для GNOME-окружения рабочего стола существует gnome-schedule:

Для KDE-дистрибутивов есть графическая оболочка, которая называется kde-config-cron.

И еще немного примеров

Поделиться: