Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

Здесь мы не будем подобно рассматривать, каким образом UNIX либо Linux регистрирует сообщения в файле. Все, что вам требуется пока знать, это номера различных уровней сообщений (от информационных до критических).

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

Необходимость отправки сообщений в файл диктуется одной из следующих причин:

• количество попыток доступа/регистрации за определенный период;

• критическая обработка одного из сбойных сценариев;

• мониторинг отчетов сценариев.

Ниже показано, как выглядит файл /var/adm/messages. Формат этого файла может немного отличаться от данного образца:

$ tail /var/adm/messages

Jun 16 20:59:03 localhost login[281]: DIALUP AT ttyS1 BY root

Jun 16 20:59:03 localhost login[281]: ROOT LOGIN ON tty$1

Jun 16 20:59:04 localhost PAM_pwdb [281] : (login) session closed for user root

Jun 16 21:56:38 localhost named[211: Cleaned cache of 0 RRs]

Jun 16 21:56:39 localhost named[211]: USAGE 929570318 929566719

Jun 16 21:56:39 localhost named[211]: NSTATS 929570318 929566719

Общий формат команды logger выглядит так:

logger -p -i message

Параметры этой команды выполняют следующие функции:

– p Определяет приоритет; в данном случае затрагивается только файл user.notice,

который всегда является используемым по умолчанию

– i Регистрирует ID процесса для каждого сообщения

26.5.1. Использование команды logger

В командной строке интерпретатора shell введите следующую команду:

$ logger -p notice "This is a test message. Please Ignore $LOGNAME"

Возможно, вам придется подождать пару минут, пока не отобразится информация о регистрации сообщения.

$ tail /var/adm/messages

Jun 17 10:36:49 acers6 dave: This is a test message. Please Ignore dave

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

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

$ pg test_logger

#!/bin/sh

# test_logger

logger -p notice "`basename $0`: there are currently `who |wc -l` users on the system"

Запустим сценарий.

$ test_logger

Теперь отобразим содержимое файла сообщений.

$ tail /var/adm/messages

Jun 17 11:02:53 acers6 dave: test_logger:there are currently 15 users on the system

26.5.2. Использование команды logger в сценариях

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

В следующем сценарии очистки при получении любого из сигналов с номерами 2, 3 или 15 производится регистрация сообщения.

$ pg cleanup

#!/bin/sh

#cleanup

#очистка журнальных файлов системы

trap "my_exit" 2 3 15

my_exit {

# my_exit

logger -p notice "`basename $0`: Was killed while cleaning up system logs..CHECK OUT ANY DAMAGE"

exit 1

}

tail -3200c /var/adm/utmp > /tmp/utmp

mv /tmp/utmp /var/adm/utmp

>/var/adm/wtmp

#

tail -10 /var/adm/sulog > /tmp/o_sulog

mv /tmp/o_sulog /var/adm/sulog

При просмотре файла сообщений можно заметить, что возникла проблема, связанная с выполнением сценария очистки.

$ tail /var/adm/messages

Jun 17 11:34:28 acers6 dave: cleanup:Was killed whilst cleaning up systemlogs.. CHECK OUT ANY DAMAGE

Помимо использования при работе с различными критическими сценариями, команду logger можно также применять для регистрации любых подключений удаленных пользователей к системе. Ниже приведен сегмент кода, регистрирующий пользователей, которые подключаются к системе с помощью последовательных линий tty0 и tty2. Этот фрагмент кода берет свое начало от одного из файлов /etc/profile.

  • Читать дальше
  • 1
  • ...
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • ...

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

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win