понедельник, 12 июля 2010 г.

Установка расписания выполнения команд в Ubuntu

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

Редактируем расписание циклических задач демона Cron:

$sudo mcedit /etc/crontab


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 )

#


Кроме параметров SHELL и PATH также могут использоваться MAILTO - задает имя пользователя, которому будет отправлен отчет о выполнении.

В списке задач crontab содержаться расписания выполнения команд (как самих команд, так и скриптов, которые расположены в указанных каталогах). Файл содержит предустановленные настройки для выполнения команд ежечасно, ежедневно, еженедельно, ежемесячно.

Например, скрипты, которые помещены в каталог /etc/cron.daily, будут выполняются каждый день в 6 часов 25 минут (или в то время, которое укажете вы в этом файле).

25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Аналогично для других каталогов /etc/cron.hourly, /etc/cron.weekly, /etc/cron.monthly. Скрипты из соответствующих папок будут отрабатывать в установленное время.

Если нужно сделать, чтобы скрипт запускался ежедневно в установленное время, создаем в каталоге /etc/cron.daily файл, например, update_av следующего содержания:

#! /bin/bash
<сама комманда для выполнения>


Теперь делаем этот файл исполняемым:

$sudo chmod +x update_av

Усе. Должно работать.


Можно также прописывать сами команды для выполнения прямо в /etc/crontab в следующем формате:

мин(0-59) часы(0-23) день(1-31) месяц(1-12) день(0-6, 0-Вс) имя_пользователя команда

Но можно и редактить сразу пользовательский кронтаб так:

$crontab -e

Расписание для крона в этом случае отличается лишь тем, что для пользовательского кронтаба нет необходимости указывать имя пользователя (команды будут выполняться от текущего пользователя).

мин(0-59) часы(0-23) день(1-31) месяц(1-12) день(0-6, 0-Вс) команда


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

Отправить комментарий