Если вы проводите много времени в среде Linux, очень важно знать, где находятся файлы журналов и что содержится в каждом файле журнала. 
Когда ваша система работает без сбоев, потратьте некоторое время на изучение и понимание содержимого различных файлов журналов, что поможет вам в случае кризиса, и вам придется просматривать файлы журналов, чтобы определить проблему.
/etc/rsyslog.conf контролирует то, что находится внутри некоторых файлов журнала. Например, ниже приводится запись в rsyslog.conf для / var / log / messages .
|
1
2
3
|
$ grep "/var/log/messages" /etc/rsyslog.conf*.info;mail.none;authpriv.none;cron.none /var/log/messages |
В приведенном выше выводе
- * .info означает, что будут регистрироваться все журналы с типом INFO.
- mail.none, authpriv.none, cron.none указывает, что эти сообщения об ошибках не должны регистрироваться в файле / var / log / messages.
- Вы также можете указать * .none, что означает, что ни одно из сообщений журнала не будет зарегистрировано.
Ниже приведены 20 различных файлов журналов, которые находятся в каталоге / var / log /. Некоторые из этих файлов журнала зависят от дистрибутива. Например, вы увидите dpkg.log в системах на основе Debian (например, в Ubuntu).
- / var / log / messages — содержит глобальные системные сообщения, включая сообщения, которые регистрируются во время запуска системы. В / var / log / messages записано несколько вещей, включая mail, cron, daemon, kern, auth и т. Д.
- / var / log / dmesg — содержит информацию о кольцевом буфере ядра. Когда система загружается, она выводит на экран количество сообщений, отображающих информацию об аппаратных устройствах, обнаруженных ядром в процессе загрузки. Эти сообщения доступны в кольцевом буфере ядра, и всякий раз, когда приходит новое сообщение, старое сообщение перезаписывается. Вы также можете просмотреть содержимое этого файла с помощью команды dmesg.
- /var/log/auth.log — содержит информацию об авторизации системы, включая имена пользователей и механизмы аутентификации, которые были использованы.
- /var/log/boot.log — содержит информацию, которая регистрируется при загрузке системы
- /var/log/daemon.log — содержит информацию, записанную различными фоновыми демонами, работающими в системе
- /var/log/dpkg.log — содержит информацию, которая регистрируется при установке или удалении пакета с помощью команды dpkg
- /var/log/kern.log — содержит информацию, зарегистрированную ядром. Полезно для устранения неполадок в специально построенном ядре.
- / var / log / lastlog — отображает информацию о последних входах в систему для всех пользователей. Это не файл ASCII. Вы должны использовать команду lastlog для просмотра содержимого этого файла.
- / var / log / maillog /var/log/mail.log — содержит информацию журнала с почтового сервера, работающего в системе. Например, sendmail записывает информацию обо всех отправленных элементах в этот файл
- /var/log/user.log — содержит информацию обо всех журналах уровня пользователя
- /var/log/Xorg.x.log — Журнал сообщений от X
- /var/log/alternatives.log — информация об альтернативах обновления регистрируется в этом файле журнала. В Ubuntu update-alternatives поддерживает символические ссылки, определяющие команды по умолчанию.
- / var / log / btmp (команда lastb ; показывает все неудачные попытки входа в систему) / var / log / wtmp (отображает всех пользователей, вошедших и вышедших из системы с момента создания файла… последняя команда; попытки входа в систему) — этот файл содержит информацию о неудачной регистрации attemps. Используйте последнюю команду для просмотра файла btmp. Например, « последний -f / var / log / btmp | больше »
- / var / log / cups — все сообщения журнала, связанные с принтером и печатью
- /var/log/anaconda.log — при установке Linux все связанные с установкой сообщения сохраняются в этом файле журнала.
- /var/log/yum.log — содержит информацию, которая регистрируется при установке пакета с использованием yum
- / var / log / cron — всякий раз, когда демон cron (или anacron) запускает задание cron, он записывает информацию о задании cron в этот файл
- / var / log / secure — содержит информацию, связанную с привилегиями аутентификации и авторизации. Например, sshd регистрирует все сообщения здесь, включая неудачный вход в систему.
- / var / log / wtmp или / var / log / utmp — содержит записи для входа. С помощью wtmp вы можете узнать, кто вошел в систему. Команда who использует этот файл для отображения информации.
- / var / log / faillog — содержит неудачные попытки входа пользователя. Используйте команду faillog, чтобы отобразить содержимое этого файла.
Помимо перечисленных выше файлов журналов, каталог / var / log может также содержать следующие подкаталоги в зависимости от приложения, работающего в вашей системе.
- / var / log / httpd / (или) / var / log / apache2 — содержит веб-сервер apache access_log и error_log
- / var / log / lighttpd / — содержит легкие HTTPD access_log и error_log
- / var / log / conman / — файлы журнала для клиента ConMan. conman подключает удаленные консоли, которые управляются демоном conmand.
- / var / log / mail / — Этот подкаталог содержит дополнительные журналы с вашего почтового сервера. Например, sendmail хранит собранную почтовую статистику в файле / var / log / mail / statistics
- / var / log / prelink / — программа prelink изменяет общие библиотеки и связанные двоичные файлы, чтобы ускорить процесс запуска. /var/log/prelink/prelink.log содержит информацию о файле .so, который был изменен с помощью предварительной ссылки.
- / var / log / audit / — содержит информацию журналов, хранящуюся в демоне аудита Linux ( auditd ).
- / var / log / setroubleshoot / — SELinux использует setroubleshootd (SE Trouble Shoot Daemon) для уведомления о проблемах в контексте безопасности файлов и регистрирует эту информацию в этом файле журнала.
- / var / log / samba / — содержит информацию журнала, хранящуюся в samba, которая используется для подключения Windows к Linux.
- / var / log / sa / — содержит ежедневные файлы sar, которые собираются пакетом sysstat.
- / var / log / sssd / — использовать системными службами безопасности, которые управляют доступом к удаленным каталогам и механизмам аутентификации.
Просмотр огромных файлов журналов для устранения неполадок — это рутинные рутинные задачи для системных администраторов и программистов. В этой статье мы рассмотрим, как эффективно просматривать и манипулировать огромными файлами журналов, используя 10 потрясающих примеров.
Пример 1. Отображение определенных строк (на основе номера строки) файла с помощью команды sed
Просмотр только определенных строк, упомянутых в номерах строк.
|
1
|
Syntax: $ sed -n -e Xp -e Yp FILENAME |
- Команда sed: sed, которая будет печатать все строки по умолчанию.
- -n: подавляет вывод.
- -e CMD: команда для выполнения
- Xp: печать строки номер X
- Yp: вывести номер строки Y
- FILENAME: имя файла для обработки.
В приведенном ниже примере будут напечатаны строки 120, 145, 1050 из системного журнала.
|
1
|
$ sed -n -e 120p -e 145p -e 1050p /var/log/syslog |
В следующем примере вы можете просмотреть содержимое var / log / cron из строки с номерами от 101 до 110.
- M — Номер стартовой строки
- N — номер конечной строки
|
1
2
3
|
Syntax: sed -n M,Np FILENAME$ sed -n 101,110p /var/log/cron |
Пример 2. Отображение первых N строк файла с помощью команды head
В этом примере отображаются только первые 15 строк файла / var / log / maillog . Измените 15 на 10, чтобы отобразить первые 10 строк файла журнала.
Синтаксис: head -n N FILENAME
|
1
|
$ head -n 15 /var/log/maillog |
Пример 3: игнорировать последние N строк файла с помощью команды head
В этом примере показано, как игнорировать последние N строк и отображать только оставшиеся строки в верхней части файла. В следующем примере будут отображены все строки / var / log / secure, кроме последних 250 строк.
|
1
2
3
|
Syntax: head -n -N FILENAME$ head -n -250 /var/log/secure |
Пример 4: Показать последние N строк файла с помощью команды tail
В этом примере отображаются только последние 50 строк файла / var / log / messages . Измените 50 на 100, чтобы отобразить последние 100 строк файла журнала.
|
1
2
3
|
Syntax: tail -n N FILENAME$ tail -n 50 /var/log/messages |
Пример 5: игнорировать первые N-1 строк файла, используя команду tail
Этот пример показывает, как игнорировать первые N-1 строки и показывать только оставшиеся строки. В следующем примере игнорируются первые четыре строки файла /etc/xinetd.conf , который содержит только комментарии.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
Syntax: tail -n +N FILENAME$ tail -n +5 /etc/xinetd.conf defaults{ instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30}includedir /etc/xinetd.d |
Пример 6: Просмотр растущего файла журнала в режиме реального времени с помощью команды tail
Это, вероятно, одна из наиболее часто используемых команд sysadmin. Чтобы просмотреть растущий файл журнала и увидеть только новое содержимое, используйте tail -f, как показано ниже. Следующий пример показывает содержимое команды / var / log / syslog в реальном время.
|
1
2
3
|
Syntax: tail -f FILENAME$ tail -f /var/log/syslog |
Пример 7. Отображение определенных строк (на основе номера строки) файла с помощью команды head и tail
В приведенном ниже примере будут показаны номера строк 101 — 110 файла /var/log/anaconda.log
- M — Номер стартовой строки
- N — номер конечной строки
|
1
2
3
4
|
Syntax: cat file | tail -n +N | head -n (M-N+1)$ cat /var/log/anaconda.log | tail -n +101 | head -n10 |
- cat: выводит весь файл на стандартный вывод.
- tail -n +101: игнорирует строки до указанного номера строки, а затем начинает печатать строки после указанного номера.
- head -n 10: печатает первые 10 строк, то есть 101-110, и игнорирует остальные строки.
Пример 8: Показать строки, соответствующие шаблону, и несколько строк после соответствия.
В следующем примере отображается строка, соответствующая « Initializing CPU » из / var / log / dmesg, и 5 строк сразу после этого соответствия.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# grep "Initializing CPU#1" /var/log/dmesgInitializing CPU#1 [Note: The above shows only the line matching thepattern]# grep -A 5 "Initializing CPU#1" dmesg Initializing CPU#1Calibrating delay using timer specific routine.. 3989.96 BogoMIPS(lpj=1994982)CPU: After generic identify, caps: bfebfbff 20100000 0000000000000000CPU: After vendor identify, caps: bfebfbff 20100000 0000000000000000monitor/mwait feature present.CPU: L1 I cache: 32K, L1 D cache: 32K [Note: The above shows the line and 5 lines afterthe pattern matching] |
Пример 9: Отображение определенных байтов из файла.
В следующем примере объясняется, как отобразить верхние 40 или последние 30 байтов файла.
Показать первые 40 байтов из системного журнала.
|
1
|
$ head -c40 /var/log/syslog |
Показать последние 30 байтов из системного журнала.
|
1
|
$ tail -c30 /var/log/syslog |
Пример 10. Просмотр сжатых файлов журнала
Через определенное время все файлы системного журнала поворачиваются и сжимаются. Вы можете распаковать его на лету и направить вывод в другую команду unix для просмотра файла, как описано ниже.
- Показать первые N строк сжатого файла.
1
$ zcat file.gz | head -250 - Показать последние N строк сжатого файла.
1
$ zcat file.gz | tail -250 - Игнорирование последних N строк сжатого файла.
1
$ zcat file.gz | head -n -250 - Игнорирование первых N строк сжатого файла.
1
$ zcat file.gz | tail -n +250 - Просмотр линий, соответствующих шаблону
1
$ zcat file.gz | grep -A2'error' - Просмотр определенного диапазона строк, идентифицированных по номеру строки.
1
$ zcat file.gz | sed -n -e 45p -e 52p