[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Операционные системы / Linux /

Введение в автоматизацию. Часть 1

Станислав Лапшанский

Статья является переводом текста Dru Lavigne, опубликованного по адресу: http://www.onlamp.com/pub/a/bsd/2001/11/08/FreeBSD_Basics.html.

Совсем недавно, в статье «Как заставить cron выполнять наши приказания» мы рассмотрели использование демона cron. В сегодняшней статье мы сосредоточим внимание на реальных сценариях обслуживания системы, которые cron запускает ежедневно, еженедельно и ежемесячно.

Вообще говоря, всегда разумно знать какие сценарии запускаются на вашем компьютере, поскольку любой сценарий это палка о двух концах. Их положительная сторона в том, что они могут держать вас курсе состояния «здоровья» операционной системы, а так же выполнять некоторые процедуры для поддержания ее работоспособности.

В вашу FreeBSD встроены автоматически запускающиеся сценарии для выполнения практически всех часто применяющихся рутинных операций администрирования. Вам даже не придется знать как вообще пишутся сценарии. Обратная сторона медали заключается в том, что любой сценарий может быть уязвим перед злоумышленником. Поэтому со сценариями надо поступать так же как и с демонами - использовать только те, которые вам действительно необходимы, отбрасывая все лишнее.

Сценарии, о которых мы будем говорить, находятся в каталоге /etc/periodic, где они рассортированы по трем подкаталогам, которые соответствуют периодичности их запуска - ежедневно, еженедельно и ежемесячно:

ls -F /etc/periodic
./ monthly/
../ weekly/
daily/

Имена сценариев начинаются с чисел, которые задают порядок их выполнения. Таким образом сценарий, название которого начинается с числа «120» будет выполнен перед сценарием, начинающимся на «300». Все сценарии помечены признаком выполняемого файла, на что указывает символ «*» в выводе команды ls -F:

ls -F /etc/periodic/weekly
./ 320.whatis*
../ 330.catman*
120.clean-kvmdb* 340.noid*
300.uucp* 400.status-pkg*
310.locate* 999.local*

И наконец, каждый из этих сценариев является сценарием оболочки Bourne (в этом можно убедиться посмотрев на первую строчку сценария - #/bin/sh), а это значит, что вы всегда можете протестировать любой из этих сценариев, запустив его в оболочке sh:

Вы, наверное, помните, что демон cron использует системный файл crontab для того, что бы определить, когда сценарии должны быть запущены в каждом каталоге. Вот часть файла crontab, в которой это отражено:

more /etc/crontab
<вырезано>
# do daily/weekly/monthly maintenance
# запустить ежедневное/-недельное/-месячное обслуживание
1 3 * * * root periodic daily
15 4 * * 6 root periodic weekly
30 5 1 * * root periodic monthly
<вырезано>

Таким образом демон cron вызывает программу periodic, для запуска необходимых ежедневных сценариев - каждую ночь в 3:01, для запуска еженедельных - каждую субботу в 4:15 и для ежемесячных - в 5:30 утра в каждый первый день месяца. Программа periodic имеет собственный конфигурационный файл, который называется periodic.conf, в котором указывается какие именно сценарии будут запускаться, а какие в свою очередь должны быть отключены.

Ваша FreeBSD уже имеет установленный по умолчанию конфигурационный файл periodic.conf, давайте посмотрим начало этого файла:

В этом файле ясно сказано, что вы не должны вносить в него никаких изменений. Вам на выбор предлагается два места в которых вы можете хранить свои собственные файлы periodic.conf, значения указанных в них параметров будут переопределять соответствующие значения в файле /etc/defaults/periodic.conf. Если вы попробуете найти эти файлы, вы обнаружите что их нет на диске, поскольку подразумевается что именно вы должны их создать:

more /etc/periodic.conf
/etc/periodic.conf: no such file or directory
more /etc/periodic.conf.local
/etc/periodic.conf.local: no such file or directory

Перед тем как приступить к созданию вашего собственного настроечного файла, следует ознакомиться с тем, что делает каждый сценарий, для того что бы решить - имеется ли необходимость в его запуске или нет.

Давайте посмотрим что делает каждый сценарий, а так же узнаем запускается он по умолчанию или нет. Эта информация содержится в странице руководства, вызываемой командой man periodic.conf. Я свел все эти данные в следующую таблицу:
Название сценарияПроизводимое действиеЗапу- скается по умо- лчанию
Ежедневно запускаемые сценарии:
100.clean_disksУдаляет все файлы по маскеНЕТ
110.clean_tmpsОчищает каталоги временных файловНЕТ
120.clean_preserveУдаляет старые файлы из /var/preserveДА
130.clean_msgsУдаляет старые системные сообщения из каталога /var/msgДА
140.clean_rwhoУдаляет старые файлы в каталоге /var/rwhoДА
150.clean_hoststatУдаляет старые файлы в каталоге /var/spool/.hoststatДА
200.backup_passwdДелает резервное копирование файлов /etc/master.passwdи /etc/group, а так же сообщает о их изменении со времени последнего резервированияДА
210.backup_aliasesДелает резервное копирование файла /etc/mail/aliasesfile, а так же сообщает о его изменении со времени последнего резервированияДА
220.backup_distfileДелает резервное копирование файла /etc/Distfile и показывает его измененияДА
300.calendarПроводит ежедневный запуск calendar -aНЕТ
310.accountingПроводит ротацию данных системы аккаунтингаДА
320.distfileЗапускает rdist(1)ДА
330.newsЗапускает сценарий /etc/news.expireДА
340.uucpЗапускает сценарий /etc/uuclean.dailyДА
400.status_disksЗапускает df(1) и dump -WДА
410.status_uucpЗапускает uustat -aДА
420.status_networkЗапускает netstat -iДА
430.status_rwhoЗапускает uptime(1)ДА
440.status_mailqЗапускает mailq(1)ДА
450.status_securityЗапускает сценарий /etc/securityДА
460.status_mail_rejectsВыдает статистику по отвергнутым почтовым соединениям, которая хранится в /var/log/maillogДА
470.status_namedВыдает статистику о отвергнутых запросах на передачу информации о зонах с DNS серверовДА
500.queuerunЗапускает обработку почтовой очередиДА
999.localВыполняет пользовательские сценарии указанные в файле /etc/daily.local 
Сценарии для еженедельного выполнения
120.clean_kvmdbУдаляет старые /var/db/kvm_*.dbфайлыДА
300.uucpЗапускает /usr/libexec/uucp/clean.weeklyДА
310.locateЗапускает /usr/libexec/locate.updatedbДА
320.whatisЗапускает /usr/libexec/makewhatis.localДА
330.catmanЗапускает /usr/libexec/catman.localНЕТ
340.НЕТidОбнаруживает файлы с неправильным владельцем и группой-владельцем (так называемые сироты)НЕТ
400.status_pkgИспользуя pkg_version(1) показывает список устаревших программных пакетовНЕТ
999.localВыполняет список дополнительных сценариев, указанных в файле /etc/weekly.local 
Сценарии для ежемесячного выполнения
200.accountingВыводит информацию системы пользовательского аккаунтинга, используя команду ac(8)ДА
999.localВыполняет список дополнительных сценариев, указанных в файле /etc/monthly.local 

Итак теперь вы узнали, что сценариев не так уж и много и большинство из них по умолчанию отрабатываются. Давайте станем суперпользователем и скопируем поставляемый во FreeBSD файл /etc/defaults/periodic.conf в /etc/periodic.conf, для последующего редактирования:

su
Password:
cp /etc/defaults/periodic.conf /etc/periodic.conf

Затем я открыл /etc/periodic.conf в моем любимом текстовом редакторе (попробуйте ee /etc/periodic.conf - прим. переводчика) и прошелся по интересующим меня строкам. Давайте начнем со следующего куска:

Итак мы видим, что по умолчанию, результаты выводимые ежедневно выполняющимися сценариями отсылаются по почте пользователю root. Если вы проверите почту пользователя root, то вы обнаружите там письма с темой «hostname daily run output», и, если вы прочитаете одно из таких писем, то его содержимое будет состоять из результатов работы сценариев, которые в таблице помечены знаком «ДА». Вы можете сделать так, что бы эти сообщения отсылались не пользователю root, а любому другому, если поменяете значение параметра daily_output с root на необходимое.

Если требуется, то вы можете указать не имя пользователя, а путь к файлу, в котором будет сохраняться все сообщения от сценариев, обычно этот файл называется /var/log/daily.log. По умолчанию этот файл не существует, поэтому вам потребуется его создать, это можно сделать отдав команду: touch /var/log/daily.log.

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

Этот сценарий по умолчанию выключен, однако вы можете его включить, если ваша система испытывает проблемы со свободным дисковым пространством (этот сценарий предназначен для удаления файлов с определенными расширениями - прим. переводчика). Перед тем как включить этот сценарий, сделайте резервное копирование важных файлов, а так же обязательно посмотрите на список удаленных файлов, для того что бы убедиться, что сценарий не удалил что-нибудь важное. Это особенно важно, если вы решили добавить свои расширения в список для удаления.

Следующий сценарий по умолчанию тоже выключен и может быть включен, если у вас мало свободного места (этот сценарий предназначен для очистки каталогов с временными файлами - прим. переводчика).

Перед тем, как включить сценарий clean-tmps, имейте в виду, что в некоторых версиях FreeBSD у него существуют проблемы с безопасностью. Если вы еще не знаете о существовании бюллетеней безопасности FreeBSD (security advisories - SA), то обязательно занесите в «избранное» и время от времени читайте информацию размещенную на http://www.freebsd.org/security/index.html#adv. Подписавшись на один из листов рассылки на этом сайте, вы будете получать бюллетени безопасности о найденных уязвимостях и способах их устранения. Бюллетень безопасности посвященный уязвимости в вышеупомянутом сценарии называется FreeBSD-SA-01:40.fts.v1.1.asc.

Следующий сценарий очищает каталог /var/preserve. Если вы не знаете что хранится в этом каталоге, посмотрите страницу руководства (man hier) и поищите там слово «preserve»:

man hier
/preserve
preserve/ temporary home of files preserved after 
 an accidental death of an editor; see ex(1)
preserve/ временное хранилище для файлов,
 оставшихся после аварийного завершения
 текстового редактора. См. man ex

Теперь, когда вы знаете что находится в каталоге preserve, вы можете решить, оставить или нет включенным этот сценарий.

Следующий сценарий удаляет сообщения посланные командой msgs. Если вы не используете эту утилиту, вы можете выключить этот сценарий, поскольку сообщений для удаления все равно нет. Если вы не уверены, используете ли вы эту утилиту или нет, то для того что бы узнать точно, прочитайте man msgs.

# 130.clean-msgs
daily_clean_msgs_enable="YES" # Ежедневно удалять сообщения
daily_clean_msgs_days= # Если не изменялись Х дней

Для того что бы принять решение о необходимости следующего сценария вам так же следует прочитать страницу руководства, на этот раз посвященную rwho. Если ваша машина с FreeBSD не подключена к сети UNIX-станций, то вы можете выключить этот сценарий, поскольку каталог /var/rwho будет всегда пуст.

У вас в системе может быть, а может и не быть файл hoststat. Для того что бы узнать почему, прочитайте следующий текст: http://www.geocrawler.com/archives/3/169/1999/3/0/1437080. У меня этого файла нет, поэтому я выключил этот сценарий:

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

# 200.backup-passwd
daily_backup_passwd_enable="YES" # Резервировать passwd & group

Ежедневное резервное копирование ваших почтовых алиасов (псевдонимов) будет хорошей мыслью. Вот сценарий который занимается именно этим.

# 210.backup-aliases
daily_backup_aliases_enable="YES" # Резервировать почтовые алиасы

Если вы не используете программу rdist для поддержки идентичности файлов на разных машинах, то у вас нет файла /etc/Distfile, и, соответственно, вы можете выключить следующий сценарий.

# 220.backup-distfile
daily_backup_distfile_enable="YES" # Резервировать /etc/Distfile

Программа calendar интересна, но по умолчанию не активирована. Если вам нравится программа fortune, и вы любите читать про разные интересные факты, то вероятно вам стоит запускать утилиту calendar.

Для начала надо решить какой именно календарь будет интересен вам и вашим пользователям. Возможные варианты находятся в каталоге /usr/share/calendar (обратите внимание, что есть календарь и для русскоязычных пользователей - прим. переводчика):

cd /usr/share/calendar
ls -F .
./ calendar.holiday
../ calendar.judaic
calendar.all calendar.music
calendar.birthday calendar.russian
calendar.christian calendar.usholiday
calendar.computer calendar.world
calendar.croatian de_DE.ISO_8859-1/
calendar.german hr_HR.ISO_8859-2/
calendar.history ru_SU.KOI8-R/

Это обычные текстовые файлы и вы можете легко их посмотреть и отредактировать их содержимое. Некоторые файлы содержат действительно ерундовые факты:

А в некоторых других файлах сделаны подборки разных сведений:

more calendar.all
<вырезано>
#include <calendar.world>
#include <calendar.german>
#include <calendar.usholiday>
#include <calendar.croatian>
#include <calendar.russian>
<вырезано>

Любой пользователь, знающий о каталоге с календарями может посмотреть какие факты произошли сегодня и завтра, указав в параметре -f название файла с календарем:

calendar -f calendar.birthday
Nov 4 King William III of Orange born, 1650
Nov 5 Roy Rogers born, 1912

Однако по умолчанию, если пользователь не будет находиться в этом каталоге и не укажет полное имя файла желаемого календаря, то он получит следующее сообщение об ошибке:

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

cd
mkdir .calendar
cp /usr/share/calendar/calendar.world .calendar/calendar

Мне нравится файл calendar.world, так как он включает в себя календари с днями рождения, с музыкальными, компьютерными, историческими и праздничными датами. Поскольку я сохранил его под названием «calendar», то я могу просто писать calendar в командной строке не указывая параметров и не заботясь о том, в каком каталоге я нахожусь:

Теперь давайте вернемся к сценариям. Если вы включите «календарный» сценарий, он будет посылать по почте настроенный вами вывод программы calendar всем пользователям у которых есть в домашнем каталоге файл .calendar. Суперпользователь будет получать такое письмо вне зависимости от наличия у него в каталоге такого файла. Создайте каталог с календарями, станьте суперпользователем и напишите:

calendar -a

Если вы проверите ваш почтовый ящик, то вы обнаружите там сообщение с темой «Day_of_the_Week Calendar». Если ваши пользователи хотят получить такие сообщения ежедневно, включите соответствующий сценарий:

# 300.calendar
daily_calendar_enable="NO" # Выполнить calendar -a

На сегодня все, в следующей части статьи мы закончим обзор «периодических» сценариев.




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Операционные системы / Linux /

Linux - начало
28-05-2010   

Пользователь, поставивший Linux тут же задается вопросом: “А что дальше?”. Сейчас я постараюсь ответить на этот вопрос. Итак, с первой задачей, установкой системы, вы видимо уже справились... подробнее

Кол. просмотров: общее - 4266 сегодня - 0

Консольные команды
28-05-2010   

Итак, Linux, операционная система, где консоль играет наиважнейшую роль. Есть масса людей, которые и вовсе не ставят Х-сервер и работают на черном экранчике с белыми буквами (на самом деле консоль можно модернизировать, так что и KDE позавидует:))... подробнее

Кол. просмотров: общее - 4125 сегодня - 0

Оффис в Linux
28-05-2010   

Оффисные приложения в операционной системе Linux развиты на сегодняшний день достаточно чтобы полностью заменить оные в Винде. И это не шутка! Офис в Linux ничуть не уступает своему конкуренту от Microsoft... подробнее

Кол. просмотров: общее - 3934 сегодня - 0

Мультимедиа возможности пингвина
28-05-2010   

Сегодня Linux уже не просто консоль – пингвин обладает на данный момент массой великолепных графических оболочек. При этом естественно и мультимедиа возможности Линукса тоже сильны... подробнее

Кол. просмотров: общее - 4157 сегодня - 0

Интернет и Linux
27-05-2010   

О как близки два этих понятия! Интернет и Линукс. Линукс великолепно подходит вам если вы хотите серфить глобальные просторы интренет. В “пингвине” можно найти все... подробнее

Кол. просмотров: общее - 4086 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects