Шрифт:
Интервал:
Закладка:
Анализ сообщений ядра может потребоваться для того, чтобы узнать, поддерживает ли ваше ядро то или иное устройство или функцию. Например, чтобы узнать, включена ли поддержка квотирования (п.7.2.3), выполните команду
$ dmesg | grep -i quot
Сообщения, которые ядро генерирует и сохраняет в буфере во время загрузки системы, направляются также в файл /var/log/dmesg (в не Red Hat-совместимых системах этот файл может называться /var/log/boot.msg). По окончании загрузки этот файл закрывается и его содержимое становится доступно для просмотра и анализа.
9.3.4. Что делать с протоколами дальше? Утилита logrotate
Журнальные файлы разрастаются быстро, и рано или поздно с ними приходится что-то делать: сжимать, архивировать или просто удалять. В дистрибутивах линии Red Hat и Debian для управления журналами — не только системы syslog, но и любых прикладных программ, — предназначена утилита logrotate. Она устанавливается из пакета logrotate вместе с примерным конфигурационным файлом и сценарием, обеспечивающим ее периодический запуск (п.9.4). В результате установки этого пакета сценарий logrotate попадает в каталог /etc/cron.daily.
Как следует из названия утилиты logrotate, ее основное занятие — это ротация журнальных файлов. Ротация — это последовательное переименование предыдущих версий журналов (maillog.2 a maillog.3, maillog.1 в maillog.2, maillog в maillog.1) и создание нового пустого журнального файла (maillog) для записи последующих сообщений. Ротация производится либо по истечении указанного времени, либо по превышении журнальным файлом указанного размера.
Список журналов, подлежащих обработке утилитой logrotate, и инструкции по обработке определяются конфигурационными файлами, имена которых в любом количестве передаются как аргументы при вызове утилиты (см. man logrotate). Директивы последующих конфигурационных файлов перекрывают директивы предыдущих, так что порядок имеет значение. Традиционно используется один файл /etc/logrotate.conf, а инструкции для дополнительных журналов включаются в него при помощи директивы include.
Листинг 9.5. Примерный конфигурационный файл /etc/logrotate.conf
# Секция глобальных параметров —
# инструкции для всех журналов
# Расписание ротации: еженедельно.
# Возможны варианты: daily, monthly,
# size <байт> — по достижении файлом указанного размера
weekly
# Сохранять 4 предыдущих журнала
rotate 4
# После ротации создавать новый пустой журнальный файл
create
# Сохранять старые журналы в сжатом виде [по умолчанию
# при помощи gzip, директива compresscmd позволяет указать
# другую программу для сжатия)
compress
# В каталог /etc/logrotate.d прикладные программы помещают
# инструкции по управлению их собственными журналами.
# Директива include <каталог> требует включить все файлы,
# содержащиеся в этом каталоге.
include /etc/logrotate.d
# Секция локальных параметров - инструкции для
# перечисленных в ней журналов
/var/log/wtmp /var/log/lastlog {
monthly
create 0664 root utmp
rotate 1
}
9.4. Выполнение заданий по расписанию
Пользователи ОС Windows привыкли к тому, что существует Мастер планирования заданий, позволяющий автоматически запускать приложения в заранее назначенное время. В UNIX-подобных ОС есть еще более мощный и гибкий диспетчер расписаний. Его удобно использовать для автоматизации обслуживания системы и выполнения других задач, не требующих взаимодействия с пользователем. Например, в нерабочее время можно автоматически выполнять резервное копирование данных или обновление системы через Интернет.
Создавать расписания и ставить задания в очередь на выполнение имеют право все, кому это явно не запрещено суперпользователем.
Сердцем системы периодического выполнения служат демоны atd и cron (в Red Hat-совместимых дистрибутивах он называется crond).
9.4.1. Запуск задания в назначенное время: команда at
Демон atd обслуживает задания, назначенные для однократного выполнения либо в установленное время, либо тогда, когда нагрузка на систему снизится до приемлемого уровня.
Для постановки задания в очередь для выполнения в указанное время служит команда at:
at [-f <файл>] ЧЧ:ММ
Файл — это исполняемый файл либо сценарий командного интерпретатора. Если он не указан, то вы должны будете вводить команды в командной строке, завершая ввод, как обычно, нажатием комбинации клавиш Ctrl+D.
Команда at допускает и более сложные спецификации времени, чем ЧЧ:ММ; вы можете указать дату или такое время, как midnight, noon или teatime. Подробности вы найдете на man-странице команды at.
Команда atq служит для просмотра очереди заданий. Для непривилегированного пользователя она выводит задания, поставленные в очередь им, а для суперпользователя — все задания. Удалить задание из очереди вы можете командой atrm.
Команда batch используется для тех заданий, которые заведомо потребуют много процессорного времени. Задание, поставленное в очередь при помощи этой команды, начинает выполняться только тогда, когда нагрузка на систему (среднее число процессов, ожидающих выделения им кванта времени) снизится до заранее установленного значения (по умолчанию 0.8; подробности — man atd).
Очередь заданий находится в каталоге /var/spool/at. Файлы /еtс/at.allow и /etc/at.deny содержат списки тех пользователей, которым разрешено и запрещено пользоваться системой at.
9.4.2. Диспетчер расписаний — демон cron
Этот демон запускается во время инициализации системы (сценарий /etc/init.d/crond), читает свои конфигурационные файлы и переходит в режим ожидания. Раз в минуту демон просыпается, проверяет дату последнего изменения конфигурационных файлов, перечитывает те из них, которые оказались изменены, и выполняет задания, назначенные на данную минуту.
В конфигурационных файлах, называемых еще crontab-файлами, хранятся расписания: в каталоге /var/spool/cron — по одному на зарегистрированного пользователя и /etc/crontab — суперпользовательский. Выполнив задание, демон cron отправляет почтовое сообщение о результатах выполнения владельцу crontab-файла или пользователю, указанному в переменной MAILTO этого файла.
Управление файлами расписанийПользовательские crontab-файлы не предназначены для ручного редактирования, Для управления ими служит команда crontab. Список тех, кому разрешено ее запускать, находится в файле /etc/cron.allow. Если этот файл отсутствует, то запускать crontab могут все, кроме тех, кто перечислен в файле /etc/cron.deny. Если отсутствуют оба файла, то запускать команду может только суперпользователь.
Формат команды:
crontab [-u <логин_имя> ] [ <файл> | [-l] | [-r] | [-е] | [-i]]
Если указан файл, то этим файлом замещается crontab-файл указанного пользователя; если нет, то crontab-файл редактируется на месте. Ключи означают следующее:
♦ -l — вывести на консоль содержимое файла расписания;
♦ -r — удалить файл расписания;
♦ -i — удалить, предварительно переспросив;
♦ -e — редактировать файл расписания, то есть открыть его в редакторе, указанном в переменной окружения $EDITOR (по умолчанию — vi).
Если не указаны ни файл, ни ключи, то crontab будет читать файл расписания со своего стандартного ввода. Закончив ввод строк, нажмите Ctrl+D.
Формат файла расписанияКаждая незакомментированная строка файла расписания имеет следующий формат:
минута час день месяц день_недели [логин_имя] команда
Поля спецификации времени могут содержать:
♦ символ *, соответствующий любому значению;
♦ число: 0–59 для минуты, 0–23 для часа, 1–31 для дня, 1–12 для месяца, 0–7 для дня недели (воскресенье — это и 0, и 7);
♦ диапазон чисел, разделенных дефисом: например, 1-5 в поле день_недели означает «с понедельника по пятницу»;
♦ числа или диапазоны, разделенные запятыми, действующими как ИЛИ.
Поля «день месяца» и «день недели» тоже объединяются как ИЛИ: задание будет выполнено в день, удовлетворяющий хотя бы одной из этих спецификаций.
Команда — это любая командная строка, допустимая правилами интерпретатора sh.
Например, следующая запись означает, что архивирование каталога /home/den будет производиться каждый день, кроме воскресенья, в семь часов утра:
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение