Если вы проводите много времени в среде 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 -n 10 |
- 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/dmesg Initializing CPU# 1 [Note: The above shows only the line matching the pattern] # grep -A 5 "Initializing CPU#1" dmesg Initializing CPU# 1 Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj= 1994982 ) CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 monitor/mwait feature present. CPU: L1 I cache: 32K, L1 D cache: 32K [Note: The above shows the line and 5 lines after the 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