Поскольку перечисленные команды — не самостоятельные утилиты, а подкоманды bash, справку по ним нужно запрашивать так: help <���подкоманда>
.
9.3. Протоколирование системы
В любой UNIX-подобной системе есть стандартные файлы протоколов (журналов). В них попадают сообщения, генерируемые ядром, системными демонами, утилитами окружения. Эти файлы размещаются в каталоге /var/log
. Прикладные программы обычно помещают свои протоколы в подкаталоги этого каталога, например, /var/log/httpd
— журналы HTTP-сервера. Точное расположение журнала прикладной программы зависит от ее настройки.
За ведение журналов отвечает система регистрации событий syslog. Она позволяет сортировать сообщения по источникам и степени важности, а также перенаправлять их в журнальные файлы, на консоль или на другой компьютер в сети. Все подсистемы (демоны) и правильно написанные прикладные программы не ведут протоколов самостоятельно, а посылают сообщения в систему регистрации. Дальнейшая судьба этих сообщений зависит от политики системного администратора.
Система регистрации состоит из следующих компонент:
♦ демон syslogd, принимающий сообщения от других процессов и перенаправляющий их указанным адресатам;
♦ библиотечные функции openlog(), syslog(), closelog(), посредством которых процессы общаются с демоном syslogd. Функция syslog()записывает протокольное сообщение в гнездо (сокет) /dev/log
, откуда его читает демон syslogd
;
♦ команда logger, с помощью которой сообщение демону syslogdможет передать командный интерпретатор.
Демон syslogdзапускается инициализационным сценарием в ходе начальной загрузки системы и работает непрерывно. Убедиться в том, что он запущен, можно с помощью команды
$ ps -ef | grep syslogd | grep -v grep
Примечание
Последняя в этом конвейере команда нужна для того, чтобы отфильтровать из вывода команды grepсведения о самой команде grep.
Если ваша система загружается в стиле System V, то сценарий запуска демона — это /etc/rc.d/init.d/syslog
. Как обычно, запустить демон самостоятельно вы можете с помощью команды
/etc/rc.d/init.d/syslog start
а остановить — /etc/rc.d/init.d/syslog.stop
.
Автоматический запуск системы syslogможно отключить или включить при помощи графического конфигуратора ( setupдля дистрибутива Red Hal, drakxservicesдля Mandrake, system-config-servicesдля Fedora Core).
В Red Hat-совместимых дистрибутивах демон syslogdустанавливается из пакета sysklogd, в состав которого входит также демон klogd, принимающий сообщения ядра и отправляющий их на обработку демону syslogd.
Как и всякий демон, syslogdуправляется конфигурационным файлом. По умолчанию это файл /etc/syslog.conf
, однако ничто не мешает назвать его как угодно, а потом запускать syslogdс ключом -f /path/to/config.file
. Об остальных немногочисленных ключах можно узнать но команде man syslogd
.
По сигналу HUP демон закрывает все журнальные файлы, перечитывает конфигурационный файл и возобновляет процесс протоколирования. Чтобы изменения в конфигурационном файле вступили в силу, нужно послать демону syslogdсигнал HUP. Например, так:
$ kill -HUP `cat /var/run/syslogd.pid`
9.3.1. Конфигурационный файл /etc/syslog.conf
Это простой текстовый файл, каждая непустая и незакомментированная (знак комментария — #) строка которого имеет следующий формат:
<���селектор>[;<���селектор>...] <���действие>
Селектор представляет собой правило отбора сообщений, а действие — указание, что с отобранными сообщениями дальше делать. Например, строка
user.* -/var/log/user.log
диктует перенаправление сообщений от пользовательских программ в файл /var/log/user.log
.
Действиями могут быть:
♦ /абсолютное/имя/файла— записать сообщение в файл. Префикс «-» перед именем файла запрещает синхронизировать файл после каждой записи. По умолчанию syslogdпосле записи каждой строки выполняет вызов fsync() . Это делается ради сохранности журналов, но при интенсивной записи может отнять половину процессорного времени. Поэтому следует отключать синхронизацию протоколов, в которые пишется много сообщений — например, отладочных.
♦ @имя_машины—переслать сообщение демону syslogd, работающему на указанной машине. Имя должно быть известно DNS или прописано в /etc/hosts
; в противном случае следует писать @IP-адрес.
Читать дальше
Конец ознакомительного отрывка
Купить книгу