Содержание:


















Автоматическое выполнение задач в Linux, используя Cron

Автор: Vinu Thomas
Оригинал статьи: www.help2go.com
Перевод: Николай Ганенков
Материал статьи доступен на условиях Creative Commons License (by-nc-sa).

Linux имеет мощный планировщик задач, который называется Cron. Cron позволяет Вам выполнять команды автоматически в указанное Вами время. Cron аналогичен планировщику задач, который Вы можете найти в Windows. Чтобы отслеживать расписание и задания, которые он должен будет запускать, Cron требуется файл называемый Crontab (CRON TABle). Все расписания и задания для Cron должны быть сохранены в этой таблице. Файл Crontab нельзя редактировать непосредственно. Добавлять или удалять записи в файл crontab можно используя команды crontab.

Что такое Cron и Crontab?

Вы должны понимать различие между cron и crontab и где они пересекаются. Cron - процесс или программа, которая просыпается один раз в минуту и смотрит нет ли работы, которую надо выполнить в данный момент. Crontab - список заданий и времени, в которое они должны быть выполнены.

Формат Crontab:

Каждая запись в Crontab имеет по крайней мере 6 полей, разделенных одним пробелом.

Поле 1:: Минуты --- интервал значений: 0-59
Поле 2:: Часы --- интервал значений: 0-23
Поле 3:: День --- интервал значений: 1-31
Поле 4:: Месяц --- интервал значений: 1-12
Поле 5:: День недели --- интервал значений: 0-6 (0 - воскресенье)
Поле 6:: Выполняемая команда

Теперь давайте посмотрим, как создать запись в crontab. Предположим, Вы хотите выполнять скрипт backup.sh каждый день в 6:00 вечера. Запись будет выглядеть таким образом:
0 18 * * * /home/user/backup.sh

Звездочка (*) обозначает, что будут использованы все возможные временные периоды (т.е. каждый час, каждую неделю, и т.д.). Я указываю полный путь к скрипту /home/user/backup.sh вместо просто backup.sh. Это потому, что cron запускается как root, Вы должны указать полный путь для каждого скрипта, который будет запускаться. Давайте посмотрим еще несколько примеров:

* Пусть планируется выполнение скрипта printinvoices.sh каждое воскресенье в 12:45.

45 12 * * 0 /home/account/printinvoices.sh

* А как запускать clearaccount.sh раз в месяц в 1:32am ?

21 1 1 * * /home/accont/clearaccount.sh

* Давайте посмотрим как запланировать выполнение задачи только по рабочим дням (с понедельник по пятницу)

0 10 * * 1-5 /home/account/cleartemp.sh

Добавление или редактирование записей в Crontab

Теперь, когды Вы знаете формат записей crontab, настало время добавить несколько записей в список crontab. Чтобы сделать это, можно использовать команду crontab. Указывая параметр -e, Вы попадаете в текстовой редактор по умолчанию, который позволяет добавлять и редактировать список crontab.
[crontab -e]

Другой способ - создать и сохранить текстовой файл записей crontab. Загрузить список в crontab можно используя следующую команду:
[crontab mycrontablist],
где mycrontablist есть файл, содержащий Ваши записи.

Просмотр Crontab: [crontab -l]

Вы можете просмотреть текущий список crontab указав параметр -l. В результатом выполнения команды будет список всех Ваших текущих задач из crontab.

Удаление Crontab: [crontab -r]

Параметр -r удаляет Ваш текущий crontab-файл. Результатом этого будет пустой файл с запись для текущего пользователя.

Сообщения от cron

Обычно сообщения cron получает по почте владелец процесса или пользователь или e-mail, id которого указан в переменной MAILTO. Чтобы задать переменную MAILTO, Вам нужно добавить следующую команду в начале crontab:
MAILTO=" "

Если Ваша команда работает корректно и Вы не хотите отправлять на e-mail результат работы каждый раз, Вы можете перенаправить вывод в log-файл cmd >> log.file, так что Ваше задание будет выглядеть примерно так.

0 18 * * * /home/user/backup.sh>>log.file

Если не хотите выводить результат вообще, Вы можете перенаправить вывод в null-файл : cmd>>/dev/null

0 18 * * * /home/user/backup.sh>>/dev/null




Ссылки:




Rambler's Top100