Логи Linux. Всё о логах и журналировании

В данной статье я хочу написать о консольных программах, которые помогут выдать полную информацию о “железе” вашего ПК (фирма-изготовитель, марка, ID устройства и другие данные про оборудование). Многие пользователи, которые перешли в Линукс с ОС корпорации зла, привыкли работать в графических программах, но с годами работы в Linux понимаешь, что в Терминале все работает быстрее, выдаваемая информация полнее и гибче.

Работа с командной строкой, горячие клавиши и дополнительные символы

Базовые методы управления текстом в терминале.

clear — удаляет из текущий сессии терминала все ранее выведенные в него данные, содержимое открытых документов и историю использованных команд. Используется, когда нужно четко лицезреть вывод конкретной операции.

history — показывает ранее использованные приложения и инструменты. Без дополнительных аргументов отображает 10 элементов. Но их количество можно изменить вручную, добавив к слову history любое число. history 13, к примеру.

whatis — дает однострочную справку к любой из установленных программ. Принцип работы следующий: вводим слово whatis, а за ним следом название приложения, о котором хотим узнать. Например, чтобы узнать о том, что такое nano, введем в терминал: whatis nano.

man название пакета — открывает документацию к любой из установленных программ. В ней можно посмотреть, какие функции есть у приложения, как им пользоваться, какие могут возникнуть проблемы.

Дополнительные символы

Не совсем команды, но тоже текстовые элементы, причем полезные.

; — разделитель, необходимый, чтобы активировать сразу несколько команд подряд. Это выглядит так: cd ~/Documents; mkdir Novaya_papka; rmdir Staraya-papka. Команды будут выполняться друг за другом независимо от результата выполнения каждой из них.

Читайте также:  5 лучших сканеров QR и штрих-кодов для Android

&& — то же самое, что и ;, но с важным нюансом. Команды, соединенные с помощью &&, будут выполняться друг за другом, только если предыдущая завершилась успешно. Синтаксис аналогичный:

sudo apt-get update && sudo apt-get install wget

| — запускает сразу две команды. Это может быть полезно, когда нужно запросить информацию из какого-нибудь приложения, а потом найти в полученных данных определенную строку, код, слово или иной элемент текста.

~ — сокращение от /home/имя учетной записи/. Часто фигурирует в инструкциях.

Горячие клавиши

Парочка полезных сочетаний клавиш.

Стрелка вверх — показывает предыдущую команду.

Ctrl+C — прерывает запущенный процесс.

Ctrl+A — перемещает курсор в начало строки.

Ctrl+E — перемещает курсор в конец строки.

Заключение, несколько советов

Мы рассмотрели основные команды Linux с примерами, надеемся, что они окажутся вам полезными. Напоследок приведем несколько советов по использованию терминала одной строкой.

Двойной символ & (амперсанд)

Предназначен для выполнения нескольких команд последовательно:

команда1 && команда2 && команда3

Вертикальная черта | (pipe)

Вводит результат первой команды в последующую. Например, следующая команда добавит таблицу процессов к команде поиска:

ps axu | grep имя_процесса

Стрелки вверх и вниз на клавиатуре

Помогают осуществлять навигацию по последним командам. Стрелка вверх — предыдущая выполненная команда, стрелка вниз — следующая.

history — история

Если вы забыли, как вы выполнили действие пять дней назад, а вот оно снова потребовалось, выполните history, и терминал выведет на экран последнюю тысячу команд.

Новая вкладка bash

Не всегда удобно иметь несколько окон. Терминал, как браузер, дает возможность открыть несколько вкладок сочетанием клавиш Ctrl+Shift+T.

Копирование и вставка, прерывание команды

Пробовали ли вы копировать текст и вставлять в терминал? Пробовали Ctrl+C? Ctrl+C прервет выполнение текущей команды, например таблицы процессов, сбросит текст, введенный в строку. Скопировать текст из bash — Ctrl+Shift+C. Вставить текст в bash — Ctrl+Shift+V.

Читайте также:  IOS 12 beta 5 вышла для разработчиков нововведения

Некоторые аргументы (опции) утилиты dmesg

—decode, преобразует числовое значение уровней загрузки и параметры операции в понятные текстовые примечания

Фильтрация сообщений в соответствии с опциями —facility и —level. Например:

dmesg —level=err,warn

dmesg —facility=daemon,user

dmesg —facility=daemon —level=debug

-u, —userspace для вывода сообщений пользовательского уровня

-k, —kernel для вывода сообщений уровня ядра

-t, —notime для удаления из вывода временных отметок

-T, —ctime для вывода времени в формате, подобном ctime(). Однако этот ключ бесполезен после использования ждущего режима и выхода из него. (Для printk() после окончания ждущего режима ядро не использует обычное системное время и поэтому временные значения не изменяются.)

—show-delta для вывода длительности промежутка между сообщениями[1]

-c — Очистить содержимое буфера сообщений ядра после вывода.

-s [размер буфера] — Использовать для буфера сообщений ядра, буфер размером [размер буфера]. По умолчанию его размер 16392 байт.

-n [уровень] — Установить уровень, на котором сообщения системного журнала будут выводиться на консоль.

Например, -n 1 предотвращает вывод на консоль всех сообщений, за исключением явно тревожных.

-w, —follow — Ожидание новых сообщений. (наподобие tailf/tail -f)

Логи Linux. journald

Рассказ про логи в Linux был бы не полным, если бы я не вспомнил про такую штуку как journald. Говоря линуксоидным языком – это служба сбора логов systemd-journald, которая является частью подсистемы инициализации и управления службами systemd. Другими словами это ещё одна служба сбора логов, самостоятельная и со своими особенностями. Основные особенности в том, что все логи хранятся в каталоге /var/log/journal/ и хранятся они в бинарном виде, потому просто посмотреть их как текстовый файл не получится. Для этого есть специальная утилита journalctl. Штука довольно замороченная, потому разберемся как с ней работать на конкретных примерах.

Читайте также:  Лучшие программы для покадровой 2D анимации

Для начала мы можем посмотреть все запуски системы:

journalctl —list-boots

journalctl -b -2

Можно также получить логи касающиеся только конкретной службы. Например давай увидим все что касается только службы Network Manager:

journalctl -u NetworkManager

Чтобы увидеть сообщения ядра системы вводим:

journalctl -k

Если нужно следить за логами в режиме реального времени, то используется параметр -f. Также, параметры запуска этой утилиты можно комбинировать, для получения более конкретного результата:

journalctl -b -1 -u NetworkManager

Если нужно увидеть только несколько последних записей, то их количество можно задать параметром -n:

journalctl -u NetworkManager -n 10

Ну и раз уж, уже вспомнили про systemd в целом, то наверное надо сказать и про systemd-analyze. Это такая штука которая собирает статистику загрузки системы.

Если ввести в терминале просто:

systemd-analyze

без каких-либо параметров, то мы увидим общее время загрузки системы. А если добавить параметр blame, то увидим сколько времени загружалась каждая служба, самые медленные процессы будут сверху.

Эта штука может быть полезна для выявления процессов затормаживающих загрузку и оптимизации старта системы на слабых компьютерах.

Изучение исходников little kernel (lk)

То, что находится в разделе aboot — загрузчик Android, ванильные исходники которого находятся по адресу:

Там же можно найти код, который переводит системную область emmc в режим . Ответ на вопрос, почему невозможно перезаписать recovery. Эту защиту можно отключить из ядра Linux , если написать соответствующий модуль ядра. Уже всё написано товарищем из страны восходящего солнца, который, похоже, тоже неровно дышит к телефонам компании Kyocera. Модуль с первого раза не сработал, иногда подвешивает mmc в claim mode. Возможно не всё так однозначно и требуется детальное исследование.

Вот так происходит проверка подписи загрузочных разделов:

Первые успехи