Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

cron. выполнение програм по рассписанию.

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Система
 
Автор Сообщение
ruslan89

Завсегдатай


Зарегистрирован: 09.01.2010
Сообщения: 799

СообщениеДобавлено: Вт Янв 19, 2010 9:07 am    Заголовок сообщения: cron. выполнение програм по рассписанию.
Ответить с цитатой

В данной статье я хочу затронуть настройку cron. cron - демон служащий для выполнения (запуска) программ (в том числе исполняемых файлов - скриптов) по рассписанию.
cron является очень удобной вещью, а порой просто незаменимой. что можно реализовать с его помощью?
- будильник (причём в выходные он будет будить вас позже Smile);
- рефреш для антивирусных баз;
- кл. и выкл. сетевого экрана в определённое время (чтобы дети не смотрели ничего лишнего);
- и т.д.

Структура cron:
- стартовый скрипт (для запуска самого cron);
- сам cron. у меня он расположен:
Код:

ruslan@ruslan-linux:~> whereis cron
cron: /usr/sbin/cron ...

- сонфигурационный файл:
Код:

ruslan@ruslan-linux:~> cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
#* 02 * * * root /usr/bin/freshclam
ruslan@ruslan-linux:~>

SHELL=/bin/sh означает использовать для запуска команд /bin/bash , если переменная не указана, то значение будет взято из /etc/passwd для пользователя являющимся владельцем файла.
HOME=/ корневой каталог для пользователя. Параметр не обязательный и у меня его нет! При необходимости доступа к специальным свойствам интерпретатора, значения переменных SHELL и HOME можно изменить, не зависимо от того, что прописано в /etc/passwd
MAILTO=root означает кому отсылать сообщение о результате работы команд.
PATH= задаёт пути, по которым будет осуществлён поиск вызываемых програм. тоже необязателен! мало того, лучше писать абсолютные пути (/usr/bin/mpg123 вместо mpg123).

В последнее время появилась мода на создание нескольких папок, для различного периода запуска, а в crontab прописывается скрипт, который вызывается каждую минуту и
сам разбирается что запускать (вот эта строка: "-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1")! необходимо заметить, этот файл из SuSe. Сделано это для того, чтобы не править файл конфигурации, а просто скопировать скрипт(програму) для запуска в определённый каталог:
-содержимое каталога /etc/cron.hourly будет запускаться каждый час на первой минуте часа.
-содержимое каталога /etc/cron.daily будет запускаться каждый день на второй минуте четвертого часа.
-содержимое каталога /etc/cron.weekly будет запускаться каждое воскресенье на 22'ой минуте 4'го часа.
-содержимое каталога /etc/cron.monthly будет запускаться каждый первый день месяца на 42'ой минуте 4'го часа.
При таком подхоте утрачивается гибкость управления, но никто не мешает подредактировать сам crontab!

Итак, рассмотрим подробнее формат записи задания для cron в crontab:
Код:

* 02 * * * root /usr/bin/freshclam

* 02 * * * root /usr/bin/freshclam
\_______/ \__/ \________________/
......1..........2...............3................
Состаит она(запись) из 3-х частей:
1) расписание:
минута час день_месяца месяц день_недели
Допустимые значения:
минута от 0 до 59
час от 0 до 23
день_месяца от 1 до 31
месяц от 1 до 12
день_недели от 0 до 6 (0 это воскресенье)
2) пользователь, от имени которого будет запущена програма (необходимо стремится к использованию пользователей с наименьшим приоритетом!);
3) путь програмы (абсолютный путь!).

Но файл конфигурации может править только суперпользовалель, и что, простому смертному не познать все прелести cron'а??? конешно это не правда, но для юзера последовательность действий будет отличаться:
1) имеем програму (назовём её /home/user/bin/primer), которую нужно запускать в 6 часов утра каждый день;
2) создаём временный файл ~/temp (тильда говорит о том, что файл содержиться в домашней директории юзера) со следующим содержанием:
Код:

SHELL=/bin/bash
MAILTO=user
1 6 * * * /home/user/bin/primer

//Добавлено
!!!стоит отметить, что последняя строка должна быть пустой!!! т.е. после последней строки нужно перейти на новую строку (нажать ENTER) потом сохранять файл!
//Добавлено
3) даём понять cron'у что хоти задействовать данный файл рассписаний:
Код:

ruslan@ruslan-linux:~>crontab ~/temp


статья основана на достижениях Ingvar'а Smile.
по мере необходимости статья будет правится.
статья написана с надеждой на то, что в скором времени появиться отдельный раздел - "Статьи", так как материала для него на форуме скопилось предостаточно.


Последний раз редактировалось: ruslan89 (Пт Апр 30, 2010 3:39 am), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13757
Откуда: Кировоград, Украина

СообщениеДобавлено: Вт Янв 19, 2010 10:21 am    Заголовок сообщения:
Ответить с цитатой

Так продолжать Question Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
ruslan89

Завсегдатай


Зарегистрирован: 09.01.2010
Сообщения: 799

СообщениеДобавлено: Пт Апр 30, 2010 3:40 am    Заголовок сообщения:
Ответить с цитатой

подправил
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Система Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис