Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Работа в консоли Linux

Bash скрипты: Пишем в системные логи

Оригинал: Shell scripting: Write message to a syslog / log file
Автор: Vivek Gite
Дата: 27 января 2007
Свободный перевод: Алексей Дмитриев
Дата перевода: 10 июля 2010

Приложения и программы дают свои сообщения в системные логи в директории /var/log при помощи syslogd. А как можно добавить свои сообщения в логи из командной строки или при помощи bash скрипта?

Команда logger

Команда logger ≈ это консольный интерфейс для связи с модулем системных логов. Она позволяет записывать однострочные сообщения в системный лог из командной строки. Например, чтобы дать сообщение "System rebooted for hard disk upgrade" нужно ввести в командной строке:

$ logger System rebooted for hard disk upgrade

Чтобы убедиться в том, что в логе появилась такая запись, нужно просмотреть файл /var/log/messages. Это можно сделать при помощи следующих команд:

  • # tail /var/log/messages
  • # less /var/log/messages
  • # more -f /var/log/messages
  • # vi /var/log/messages

Обратите внимание, что просмотр логов нужно производить от имени суперпользователя (команды su, sudo, а в некоторых дистрибутивах даже su - ).

Выберем tail, показывающий только 10 последних записей, так как файл /var/log/messages может быть весьма велик:

# tail /var/log/message

И увидим последней строчкой:

Jan 26 20:53:31 dell6400 logger: System rebooted for hard disk upgrade

Скрипты bash

Можно применять команду logger в скриптах:

#!/bin/bash
HDBS="db1 db2 db3 db4"
BAK="/sout/email"
[ ! -d $BAK ] && mkdir -p $BAK || :
/bin/rm $BAK/*
NOW=$(date +"%d-%m-%Y")
ATTCH="/sout/backup.$NOW.tgz"
[ -f $ATTCH ] && /bin/rm $ATTCH  || :
MTO="you@yourdomain.com"
for db in $HDBS
do
 FILE="$BAK/$db.$NOW-$(date +"%T").gz"
 mysqldump -u admin -p'password' $db | gzip -9 > $FILE
done
tar -jcvf $ATTCH $BAK
 mutt -s "DB $NOW" -a $ATTCH $MTO <<EOF
DBS $(date)
EOF
[ "$?" != "0" ] &&  logger "$0 - MySQL Backup failed" || :

Последняя строка и будет давать запись в лог в случае неудачи создания запасной копии.

Другие варианты применения команды logger

Для записи в другие логи применяется опция -f, например, для записи в /var/log/myapp.log:

$ logger -f /var/log/myapp.log
При помощи опции -s можно дублировать посланное в лог сообщение на экране монитора в выводе стандартного сообщения (stderr):

#  logger -s "Hard disk full"

logger: Hard disk full

Команда logger имеет очень понятный ман. Еще будет полезен

man syslogd

 



Средняя оценка 5 при 1 голосовавших