$ 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.
TTY_LINE=`tty`
case $TTY_LINE in
"/dev/tty0") TERM=ibm3151 ;;
"/dev/tty2") TERM=vt220
#проверка пользователей, которым разрешен доступ к модемной линии
#
echo "This is a modem connection"
# modemf содержит регистрационные имена для допустимых пользователей
modemf=/usr/local/etc/modem.users
if [ -s $modemf ] then
user=`cat $modemf | awk '{print $1}' | grep $LOGNAME`
# если имя не содержится в файле, пользователь не допускается в систему
if [ "$USER" != "$LOGNAME" ]
then
echo "INVALID USER FOR MODEM CONNECTION"
echo " DISCONNECTING………"
sleep 1
exit 1
else
echo "modem connection allowed"
fi
fi
logger -p notice "modem line connect $TTY_LINE… $LOGNAME"
;;
*) TERM=vt220
stty erase '^h' ;;
esac
Команда logger является превосходным инструментальным средством, применяемым для регистрации информации в глобальных файлах сообщений системы.
26.6. Заключение
Благодаря использованию функции перехвата и сигналов реализуется изящное завершение выполнения сценариев. Возможность регистрации сообщений в системном журнальном файле обеспечивает пользователей и администраторов полезной информацией, облегчающей распознавание и устранение любых потенциальных проблем.
ГЛАВА 27
Небольшая коллекция сценариев
В настоящей главе содержатся примеры некоторых наиболее распространенных сценариев. Изучая их, можно заметить, что все они невелики по размеру и довольно просты. В этом и состоит преимущество использования сценариев; они не должны быть сложными и объемными, поскольку сценарии создаются с целью экономии времени пользователя.