Все о Linux. LinuxRSP.Ru
Альт Линукс СПТ 6.0 Сертификат ФСТЭК

[Linux и BSD]: свежие новости, анонсы статей и книг, обзоры софта от LinuxRSP.RU
Подписаться письмом
Подписка на журнал Linux Format 12 номеров (01-12/2012)


 Сегодняшние новости:

Руководитель компании Red Hat назван "предпринимателем года"

Релиз минималистичного дистрибутива Tiny Core Linux 4.2

Новая версия системы биллинга NETAMS 4.0

Релиз Clementine 1.0.0

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Подключение сети к глобальному IPv6 пространству

Вышел релиз WINE@Etersoft 2.0

IPv6 шлюз для локальной сети

Новый релиз программы YAGF

Представлен новый стандарт языка C: C11

Сборка панорам: Hugin 2011.4.0

Релиз CentOS 6.2

Пятый выпуск электронного журнала об юридических аспектах свободного ПО

Создание межсетевых экранов: pfSense 2.0.1

Сайты премьер-министра и правительства перешли на лицензию Creative Commons

Утверждён ГОСТ, определяющий положения по использованию Свободного ПО

Подписка на журнал "Linux Format" 12 номеров (2012 год)

Девятый лис: Firefox 9

Программная АТС: Asterisk 10

Выпущен Amarok 2.5.0

Представлена новая версия Qt 4.8

Выпущен Blender 2.61

Релиз Wordpress 3.3 "Sonny"

Google

 Новые статьи за январь 2012:

Архитектура Google 2011

Мониторинг Nginx с помощью MRTG

Решение проблем при использовании "1c предприятие" 8.2 в Linux

25 правил .htaccess, которые должен знать каждый web-разработчик

IPv6 шлюз для локальной сети

Подключение сети к глобальному IPv6 пространству

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Как понять почему упал сервер не подключая к нему монитор и клавиатуру?

Установка 1с 8.2 и PostgreSQL 9.0.3 на CentOS 6

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

Установка Linux на USB-флешку

Краткое руководство по GNOME Shell в Ubuntu 11.10

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки

   Дистрибутивы и атрибутика



DeveloperWorks Россия





Rambler's Top100


 
 

Крон-временщик

Роздобудько Владимир ака ВОРОН

Все мы не раз отдыхали в профилактории или санатории, поэтому всем нам хорошо помнится распорядок дня, которые составляли для нас. Там было написано вcё чуть ли не поминутно. Нашим компьютерам тоже надо составлять распорядок дня, только в отличие от людей выполняют они его точно и без лишних раздумий.

Любая серьезная компьютерная система, которая предоставляет определенные сервисы, основана на автоматизации определенных процессов и действий. Автоматизация работы определенных задач - это одна из главных задач администратора любой серьезной системы.

Существует довольно широкий класс задач, требующих достаточного количества вычислительных ресурсов. Однако выполнение их в рабочее время суток нежелательно, так как данные задачи будут затормаживать работу наших сервисов. Что же делать в таком случае??? Сидеть администратору до трех часов ночи? Есть вариант получше - демон cron.

Первым делом необходимо посмотреть, установлен ли у вас данный демон. Для этого можно воспользоваться утилитой ntsysv и просмотреть список ваших демонов, если crond присутствует в списке и стоит на автоматическом запуске, значит все нормально. В противном случае вам необходимо будет установить его из rpm файлов, которые поставляются вместе с дистрибутивом.

Демон cron запускается в числе других демонов с помощью /etc/rc.d/init.d/crond или можно запускать его с помощью /etc/rc.d/rc.local. Активация cron происходит ежеминутно. Каждую минуту он считывает crontab файлы (речь о них пойдет немного попозже) и проверяет, не наступило ли время для запуска какой-либо запланированной задачи. Исходя из этого правила можно сделать вывод, что минимальный интервал времени между запуском задач должен составлять 60 секунд.

Весь список задач, которые требуют выполнения в определенный период времени, записываются в так называемые crontab-файлы. Самый главный crontab-файл, то есть crontab-файл, который запускается с правами суперпользователя, находится в каталоге /etc и называется crontab.
Управление crontab-файлами производится с помощью утилиты crontab.

Синтаксис:
crontab [ -u user ] { -l | -r | -e } file
Ключи Описание
-u Данной командой мы задаем пользователя, для которого мы будет создавать данный crontab файл
-l Выводит информацию из вашего crontab-файла на экран
-r Очищает список задач
-e Позволяет редактировать ваш crontab-файл

Давайте попробуем определить наши крон файлы.

Crontab -u root /etc/crontab - данной командой мы присвоили нашему суперпользователю файл /etc/crontab. В нем мы и будем задавать список наших задач.
Создадим какой-то crontab для наших пользователей.
Crontab -u raven /home/raven/raven.cron - создается crontab-файл для пользователя c именем raven

Помимо задач, которые необходимо выполнить crontab файл должен обязательно содержать интерпретатор команд.
Главные записи в сrontab файле:
# Здесь мы выставляем интерпретатор команд
SHELL=/bin/bash
#Выставляем путь к файлам
PATH=/sbin:/bin
# Кому посылать отчет о выполнении команд, в данном случае - root

MAILTO root

# Домашний каталог
HOME=/

Итак, попробуем разобраться, каков синтаксис задания новых задач демону cron.
В Linux-системах строки crontab файла содержат в себе 6 полей.

1. Минуты (0-59)
2. Часы (0-23)
3. День (1-31)
4. Месяц(1-12)
5. День недели
6. Путь к файлу или командная строка, которую необходимо выполнить.

Четыре первых поля могут задаваться с помощью перечисления, например, 1-5, что соответствует набору значений 1,2,3,4,5 или вы можете устанавливать в них символ ?*?, описывающий все допустимые значения.

Итак, разобравшись с синтаксисом написания crontab-задач, можно немного попрактиковаться.

Создадим задачу, которая будет производить индексацию всех существующих файлов в нашей системе. Данная задача очень интересна, так как система Linux содержит в себе сотни тысяч файлов, и порой при поиске определенного файла мы затрачиваем кучу времени на нахождение его месторасположения. Чтобы избежать данного неудобства, необходимо проводить индексацию всех файлов нашей системы(slocate -u). После индексации на поиск любого файла у нас будет уходить 1 или 2 секунды. Данную задачу мы будем запускать ежедневно в 2 часа ночи.

Выполняем следующую команду:
Crontab -u root -e

В итоге запускается редактор vi, с помощью которого мы вручим новую задачу.
Вот как должна выглядеть запись для запуска в нашем crontab файле

0 2 * * * /usr/bin/./slocate /u - запускается ежедневно в 2 часа утра.


Создадим задачу, которая должна запускаться в конце рабочей недели. Пусть это будет проверка целостности нашей файловой системы. Делается это следующим образом:

0 23 * * fr fsck -a /dev/hda1 - каждую пятницу в 23 :00 будет происходить проверка целостноcти нашей файловой системы.

Для более качественного использования cron-задач нам понадобятся знания программирования shell-скриптов начального уровня. Поставим себе следующую задачу:

Мы хотим делать копию нашей mysql базы данных ежедневно. Причем имя файла должно быть сегодняшней датой. Базу мы пакуем с помощью архиватора tar и закидываем по сети на компьютер под управлением ОС Windows c помощью samba. Предполагается, что компьютер под управлением Windows работает круглосуточно. Создадим скриптовый файл, который и будет делать все вышеописанные операции.

Содержимое нашего файла (scr):

#! /bin/bash - данной командой мы задаем имя интерпретатора, с помощью которого будет обрабатываться наш shell script

mount -t smbfs //10.0.0.2/Linux /mnt/linux -o rw, username=Администратор
password=*******

Монтируем smb ресурс по адресу 10.0.0.2/Linux в каталог /mnt/linux. При монтировании передаем имя пользователя и пароль, с правами которого будет происходить монтирование ресурса. В данном случае имя пользователя - "Администратор".

Теперь нам необходимо сделать копию нашей базы данных mysql. Для этого воспользуемся стандартной родной утилитой mysqldump, которая находится в папочке bin, каталога mysql.

Выполняем следующую команду:
Mysqldump -h ваш ip -u имя пользователя --password=его пароль имя базы > /data.sql

Тем самым мы перенаправляем в файл весь sql код нашей базы данных. Так как в ней очень много повторяющихся слов и символов, будет просто некультурно забыть сжать её перед тем, как закачать по сети к себе на хард.
Теперь мы хотим сжать нашу базу данных и назвать архив сегодняшним числом. Здесь потребуются знания shell программирования.

source="/data2.sql"								#директория, в которой находится файл для сжатия
 targer="/mnt/linux/backups/db/"		#директория, куда мы будем копировать
 out_file=$(date -I).gz								#имя выходного файла (сегодняшняя дата)
 echo $out_file;											#вывести имя файла на экран
 gzip $source											#сжать наш файл
 source="/data2.sql.gz"							#переопределяем переменную source
 cp $source $target$out_file				#копируем сжатый файл
 rm $source												#удаляем исходный файл	

Я думаю, данный скрипт будет полезен в вашей практике. Вообще, shell в сочетании с демоном cron дает огромные возможности по автоматизации процессов системы.
Перед тем, как записать данный файл в crontab-файл, не забудьте сделать его запускаемым:
Chmod +x имя файла

Все операции, которые выполняются кроном, записываются в лог файл, находящийся в папке /var/log. Имя файла - "cron".

Вот, пожалуй, и всё на сегодня. До следующих встреч.


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2012 LinuxRSP


Реклама:
пятницкое шоссе участки . Брендовая детская одежда. Мужская брендовая одежда интернет магазин.