|
Крон-временщик
Все мы не раз отдыхали в профилактории или санатории, поэтому всем нам хорошо помнится распорядок дня, которые составляли для нас. Там было написано в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".
www.cybersecurity.ru
Новинки операционных систем 13-03-2007 Отображение скрытого оборудования в Диспетчере устройств 26-08-2008 Новинки операционных систем «Призрачные» и скрытые устройства, которые не отображаются в Диспетчере устройств Windows (Windows Device Manager), могут приводить к сбоям и системным конфликтам. В этой статье мы расскажем о том, как заставить Диспетчер показывать все скрытые устройства для облегчения диагностики возникающих проблем.Один из самых странных недостатков XP, связанных с оборудованием, – это наличие «призрачных» и скрытых устройств, которые не отображаются в Диспетч...
35% покупателей компьютеров с Windows Vista переходят на Windows XP - исследование 22-08-2008 Новинки операционных систем Западные исследователи из компании Devil Mountain Software провели занятное исследование, по итогам которого выяснилось, что более трети покупателей новых компьютеров и ноутбуков в США берут машины с предустановленными ОС Windows Vista, однако сразу после покупки делают откат ОС до версии Windows XP.Исследователи отмечают, что из более чем 3 000 опрошенных покупателей новых ПК или ноутбуков, 35% сообщили, что сразу же после покупки или непоср...
Новая жизнь Windows XP 28-07-2008 Новинки операционных систем Очередной сюрприз преподносит нас корпорация Microsoft: в рамках договора о сотрудничестве ее и некоммерческого фонда One Laptop Per Child (OLPC, что переводится дословно как «по ноутбуку каждому ребенку») было достигнуто соглашение о том, что софтверный гигант подготовит к выпуску специализированную версию WindowsXP, которая будет оптимально работать на особых ноутбуках XO, созданных в рамках такой программы («стодолларовые» ноутбуки, как Вы мог... |