Отладочное мышление

Отладочное мышление

Журналы и устранение неполадок

Узнайте, где хранятся журналы, как работает журналctl и как спокойно отлаживать ошибки разрешений, проблемы с пакетами, сбои загрузки, работу сети и дисковое пространство.

Аудитория
Все, кто в конечном итоге увидит ошибку
Время чтения
22 мин

Безопасный подход к устранению неполадок

Устранение неполадок — это не угадывание команд, пока что-то не изменится. Это сужает проблему: что изменилось, какой уровень не работает, какие доказательства существуют и какой самый маленький безопасный тест?

Прежде чем что-то менять, запишите точные ошибки. Сначала отдайте предпочтение проверке только для чтения. Сделайте резервные копии перед редактированием конфигурации. Изменяйте одну переменную за раз.

Где живут логи

Современные дистрибутивы systemd хранят в журнале множество журналов, запрашиваемых с помощью Journalctl. Традиционные журналы также отображаются в /var/log. Приложения могут осуществлять вход в файлы, журнал, контейнеры или собственные каталоги данных.

Где живут логи
Источник журналаГде искать
системные службыжурналctl -u имя-сервиса
Текущая загрузкажурналctl -b
Сообщения ядражурналctl -k или dmesg
Традиционные бревна/var/log
Журналы приложенийДокументы приложения, /var/log/app, /var/lib/app, журналы контейнера

основы журналаctl

Journalctl может фильтровать по службе, загрузке, приоритету, времени, исполняемому файлу, пользователю и т. д. Целевые фильтры обычно более полезны, чем прокрутка всего.

Текущая загрузка
journalctl -b
Журналы обслуживания
journalctl -u nginx --since "30 minutes ago"
Следите за журналами
journalctl -f
Ошибки и хуже
journalctl -p err -b

Распространенные проблемы Linux и первые проверки

Распространенные проблемы Linux и первые проверки
ProblemПервые проверки
Доступ запрещенwhoami, id, ls -l, биты выполнения каталога, нужно sudo
Установка пакета не удаласьСеть, метаданные репозитория, удерживаемые пакеты, дисковое пространство, конфликтующие репозитории.
Служба не запускаетсяsystemctl status, journalctl -u, синтаксис конфигурации, конфликты портов
Проблема с загрузкойжурналctl -xb, systemctl --failed, записи fstab, недавние изменения ядра или драйвера
Проблема с сетьюip addr, ip route, проверка DNS, ping, curl, ss, firewall
Диск заполненdf -h, du -h -d 1, журналы, кеши, снимки, образы контейнеров

Как читать сообщения об ошибках

Ошибка часто содержит неудачную операцию, целевой путь или службу, причину, а иногда и номер файла и строки. Не выполняйте поиск только в последней общей строке, если над ней есть более конкретная строка.

В случае ошибок разрешений укажите пользователя, целевой файл, родительские каталоги и желаемую операцию. Для сетевых ошибок отделите ошибки DNS от ошибок в соединении, тайм-аута, сбоев TLS и кодов состояния HTTP.

Практические шаги по отладке

  1. 1Воспроизведите проблему один раз и скопируйте точную ошибку.
  2. 2Определите уровень: файл, разрешение, пакет, служба, сеть, диск, загрузка или приложение.
  3. 3Сначала проверьте состояние с помощью команд только для чтения.
  4. 4Проверьте журналы незадолго до момента сбоя.
  5. 5Сделайте обратимое изменение.
  6. 6Проверьте еще раз и сравните доказательства.
  7. 7Сохраняйте заметки, чтобы можно было отменить изменения или объяснить, что изменилось.