All Debian boot messages
How can the messages that scroll by when booting a Debian system be reviewed later? In other words, how can I review absolutely all of them conveniently? That’s the important point to the question; merely a subset of them is insufficient. Some boot time messages are written only to /var/log/daemon.log and /var/log/syslog , where I have seen messages like: udevd[240]: SYSFS<>= will be removed in a future udev version . In squeeze, these are not in /var/log/dmesg . Nor are they in /var/log/boot with setting BOOTLOGD_ENABLE=yes in /etc/default/bootlogd and package bootlogd installed. For more details on rsyslogd ‘s various logging locations see your /etc/rsyslog.conf .
4 Answers 4
The boot messages come in two parts: those that come from the kernel (loading drivers, detecting partitions, etc) and those that come from the services starting up ( [ OK ] Starting Apache. ). The kernel messages are stored in /var/log/kern.log and can also be accessed from the kernel’s own log buffer with the dmesg program.
The userspace messages are not stored anywhere unless you install the bootlogd package. It will log the service startup messages in /var/log/boot Note if you have the «fancy» boot messages (the colored [ OK ] [FAIL] etc messages), it will log the terminal escape codes in the file. You can disable the fancy boot messages by creating an /etc/lsb-base-logging.sh shell script which defines FANCYTTY=0 in it.
Rather than disabling the colored messages, you can view them using commands like sed ‘s/\^[/\o33/g;s/[1G[/[27G[/’ /var/log/boot | less -r — see stackoverflow.com/questions/10757823/…
Bootup messages pass by so fleetingly that, for some, one might not be sure what they say. You may wish to check all the files where they might be logged, in addition to the usual (well-known) log files, for verification purposes (at least).
On Debian, logs generally are kept in directory /var/log .
After booting, what changed there today (which files) can be seen in the Bash shell by:
sudo ls -ld —sort=time `sudo find /var/log -type f -daystart -ctime 0 | sed -r ‘s/^.*\.(1+|old|gz)$//g’`
The scrolling output may contain interesting strings like ‘will be removed’. Here’s how to find them:
sudo grep -ilF ‘will be removed’ `sudo find /var/log -type f -daystart -ctime 0 | sed -r ‘s/^.*\.(4+|old|gz)$//g’ | sort` > log-list; sudo nano `cat log-list`
Boot-time logging can be enabled by:
and edit /etc/default/bootlogd to contain
Unfortunately, bootlogd seems unavailable on squeeze.
For color information, see here.
I know it sounds silly, but when none of the other options work and you’re desperate, you can grab your phone and record your screen as it boots and then play back the video at reduced speed to review them.
This is not a good solution if you want to programmatically check your boot messages, but if you see an error during booting and you want to diagnose it, this solution works fine.
In 2021, I couldn’t make bootlogd work as expected in debian buster. I installed it, enabled the service (with some difficulties similar to those described here), rebooted several times, but there was still nothing in /var/log/boot (except the hint that nothing had been logged yet).
It turned out that bootlogd is not compatible with systemd . But it is systemd itself which came to rescue: journalctl —list-boots lists the boot processes it is aware of, while journalctl -b N outputs the log of boot process N . To output the log of the last boot process, use N=0 , i.e. journalctl -b 0 . As far as I can tell, these logs include the messages of the kernel as well as those from the init system.
journalctl -b lists all details from all boot processes, but on my systems, it is only aware of the last boot process, so it doesn’t make a difference. To be honest, I have no clue how to make the boot logs permanent so that it could output the logs for all of them instead of only the last one. But I’m usually interested only in the last boot process anyway, so this isn’t a problem for me.
I am pretty sure that journalctl -b does not only work on debian, but on nearly all distributions which use systemd .
Как посмотреть логи в Linux
Системные администраторы, да и обычные пользователи Linux, часто должны смотреть лог файлы для устранения неполадок. На самом деле, это первое, что должен сделать любой сисадмин при возникновении любой ошибки в системе.
Сама операционная система Linux и работающие приложения генерируют различные типы сообщений, которые регистрируются в различных файлах журналов. В Linux используются специальное программное обеспечение, файлы и директории для хранения лог файлов. Знание в каких файлах находятся логи каких программ поможет вам сэкономить время и быстрее решить проблему. В этой статье мы рассмотрим основные части системы логирования в Linux, файлы логов, а также утилиты, с помощью которых можно посмотреть логи Linux.
Расположение логов по умолчанию
Большинство файлов логов Linux находятся в папке /var/log/ вы можете список файлов логов для вашей системы с помощью команды ls:
Ниже мы рассмотрим 20 различных файлов логов Linux, размещенных в каталоге /var/log/. Некоторые из этих логов встречаются только в определенных дистрибутивах, например, dpkg.log встречается только в системах, основанных на Debian.
- /var/log/messages — содержит глобальные системные логи Linux, в том числе те, которые регистрируются при запуске системы. В этот лог записываются несколько типов сообщений: это почта, cron, различные сервисы, ядро, аутентификация и другие.
- /var/log/dmesg — содержит сообщения, полученные от ядра. Регистрирует много сообщений еще на этапе загрузки, в них отображается информация об аппаратных устройствах, которые инициализируются в процессе загрузки. Можно сказать это еще один лог системы Linux. Количество сообщений в логе ограничено, и когда файл будет переполнен, с каждым новым сообщением старые будут перезаписаны. Вы также можете посмотреть сообщения из этого лога с помощью команды dmseg.
- /var/log/auth.log — содержит информацию об авторизации пользователей в системе, включая пользовательские логины и механизмы аутентификации, которые были использованы.
- /var/log/boot.log — Содержит информацию, которая регистрируется при загрузке системы.
- /var/log/daemon.log — Включает сообщения от различных фоновых демонов
- /var/log/kern.log — Тоже содержит сообщения от ядра, полезны при устранении ошибок пользовательских модулей, встроенных в ядро.
- /var/log/lastlog — Отображает информацию о последней сессии всех пользователей. Это нетекстовый файл, для его просмотра необходимо использовать команду lastlog.
- /var/log/maillog /var/log/mail.log — журналы сервера электронной почты, запущенного в системе.
- /var/log/user.log — Информация из всех журналов на уровне пользователей.
- /var/log/Xorg.x.log — Лог сообщений Х сервера.
- /var/log/alternatives.log — Информация о работе программы update-alternatives. Это символические ссылки на команды или библиотеки по умолчанию.
- /var/log/btmp — лог файл Linux содержит информацию о неудачных попытках входа. Для просмотра файла удобно использовать команду last -f /var/log/btmp
- /var/log/cups — Все сообщения, связанные с печатью и принтерами.
- /var/log/anaconda.log — все сообщения, зарегистрированные при установке сохраняются в этом файле
- /var/log/yum.log — регистрирует всю информацию об установке пакетов с помощью Yum.
- /var/log/cron — Всякий раз когда демон Cron запускает выполнения программы, он записывает отчет и сообщения самой программы в этом файле.
- /var/log/secure — содержит информацию, относящуюся к аутентификации и авторизации. Например, SSHd регистрирует здесь все, в том числе неудачные попытки входа в систему.
- /var/log/wtmp или /var/log/utmp — системные логи Linux, содержат журнал входов пользователей в систему. С помощью команды wtmp вы можете узнать кто и когда вошел в систему.
- /var/log/faillog — лог системы linux, содержит неудачные попытки входа в систему. Используйте команду faillog, чтобы отобразить содержимое этого файла.
- /var/log/mysqld.log — файлы логов Linux от сервера баз данных MySQL.
- /var/log/httpd/ или /var/log/apache2 — лог файлы linux11 веб-сервера Apache. Логи доступа находятся в файле access_log, а ошибок в error_log
- /var/log/lighttpd/ — логи linux веб-сервера lighttpd
- /var/log/conman/ — файлы логов клиента ConMan,
- /var/log/mail/ — в этом каталоге содержатся дополнительные логи почтового сервера
- /var/log/prelink/ — Программа Prelink связывает библиотеки и исполняемые файлы, чтобы ускорить процесс их загрузки. /var/log/prelink/prelink.log содержит информацию о .so файлах, которые были изменены программой.
- /var/log/audit/— Содержит информацию, созданную демоном аудита auditd.
- /var/log/setroubleshoot/ — SE Linux использует демон setroubleshootd (SE Trouble Shoot Daemon) для уведомления о проблемах с безопасностью. В этом журнале находятся сообщения этой программы.
- /var/log/samba/ — содержит информацию и журналы файлового сервера Samba, который используется для подключения к общим папкам Windows.
- /var/log/sa/ — Содержит .cap файлы, собранные пакетом Sysstat.
- /var/log/sssd/ — Используется системным демоном безопасности, который управляет удаленным доступом к каталогам и механизмами аутентификации.
Просмотр логов в Linux
Чтобы посмотреть логи на Linux удобно использовать несколько утилит командной строки Linux. Это может быть любой текстовый редактор, или специальная утилита. Скорее всего, вам понадобятся права суперпользователя для того чтобы посмотреть логи в Linux. Вот команды, которые чаще всего используются для этих целей:
Я не буду останавливаться подробно на каждой из этих команд, поскольку большинство из них уже подробно рассмотрены на нашем сайте. Но приведу несколько примеров. Просмотр логов Linux выполняется очень просто:
Смотрим лог /var/log/dmesg, с возможностью прокрутки:
Лог загрузки Debian и Ubuntu
Команда dmesg и содержимое файла /var/log/dmesg позволяют посмотреть сообщения ядра Linux при последней загрузке. При этом строки, которые видно на экране при загрузке Debian, заметно отличаются от этих самых сообщений ядра так как содержат вывод скриптов инициализации. Иногда получается что какое-нибудь сообщение об ошибке мелькает при загрузке, но потом в dmesg его невидно. Что делать? А варианты такие.
1. Кнопками Shift+PgUp/Shift+PgDn можно листать не влезающие в экран сообщения.
2. При загрузке нажатием Ctrl+S можно остановить вывод сообщений на экран, Ctrl+Q — продолжить.
3. В файле /etc/default/bootlogd поправить BOOTLOGD_ENABLE=No на BOOTLOGD_ENABLE=Yes и с комфортом смотреть лог загрузки в файле /var/log/boot.
UPD. Последнее я пробовал только в Debian, очень полезная штука, а в Ubuntu, говорят, нормально не работает с тех пор как появилась прогрессивная система загрузки Upstart. Сейчас может и починили, может кто проверить?
ЗЫЖ : На всякий случай, цитирую первый коммент из первоисточника:
В Ubuntu — Неа, не починили, и врядли скоро починят. Я спрашивал у разработчиков этого самого upstart на их официальном IRC канале — они сказали, это пока не работает (хотя в конфиге даже ручкая такая есть чтоб покрутить) и когда заработает они не знают. А дальше они между собой стали обсуждать вопрос что файловая система находится в readonly в момент загрузки, или что-то в этом духе, но я уже невнимательно следил за их обсуждением. Вот так, то.
Activate bootlogd
As of Wheezy, the bootlogd package is automatically started as a daemon in the normal way (with a sys-V like init.d script). No config file any more.
Prior to Wheezy you activate bootlogd by editing /etc/default/bootlogd, this is not enabled by default:
# Run bootlogd at startup ? BOOTLOGD_ENABLE=yes
When the system is restarted, userspace messages will be logged to /var/log/boot.
Reading /var/log/boot file
Parts of a boot message sometimes can be wrapped with an ASCII color sequences, e.g. «failed» string after unsuccessful init action. bootlogd writes ^[ characters to its log file instead of actual ASCII escape character. To view colored strings via less as expected, you must replace ^[ characters with actual escape character and tell less to output ASCII color escape sequences in «raw» form:
sed 's/\^\[/\E/g' /var/log/boot | less -R
On bootlogd version 2.88 (Wheezy), a date stamp is added in front of the boot message.Consequently, the ok, fail etc. messages overwrite part of the date stamp. The cursor repositioning escape sequence [1G must be replaced by [27G to offset the cursor before printing the ok, fail, info etc. strings.
See also
Caveats
If /var/log is a separate mount, bootlogd may not correctly log to /var/log/boot. In this case using another log file should resolve the issue for now. This can be done by editing /etc/init.d/bootlogd and adding a log target to the options. Find the line with BOOTLOGD_OPTS and change it to something like this:
BOOTLOGD_OPTS="-r -c -l /root/boot.log"
(As of 2014 purging and reinstalling bootlogd should fix this.)