Система ведёт себя странно — зависает раз в день, диск работает медленнее чем раньше, программа падает без видимой причины. Прежде чем переустанавливать всё подряд — есть инструменты которые покажут где именно проблема. Разбираем по категориям.
Системные логи: что произошло и когда
dmesg — журнал ядра. Здесь видны сообщения о железе, драйверах, файловых системах. С читаемыми временными метками:
dmesg -T
Только ошибки и предупреждения, без информационного шума:
dmesg -T --level=err,warn
Следить за новыми сообщениями в реальном времени — полезно при диагностике:
dmesg -Tw
journalctl — журнал systemd. Показывает логи всей системы и сервисов.
Только ошибки за текущую загрузку:
journalctl -p err -b
Ошибки за предыдущую загрузку — если система упала и перезагрузилась:
journalctl -p err -b -1
Ошибки конкретного сервиса за последний час:
journalctl -u nginx --since "1 hour ago" -p err
Посмотреть список всех загрузок системы — видно когда были перезапуски:
journalctl --list-boots
Жёсткий диск и SSD: диагностика перед отказом
Диски не умирают внезапно — они предупреждают. S.M.A.R.T. собирает статистику ошибок, переназначенных секторов, температуры. Инструмент для чтения:
sudo apt install smartmontools
Полный отчёт о состоянии диска:
sudo smartctl -a /dev/sda
Заменить /dev/sda на нужное устройство. Посмотреть список дисков:
lsblk
На что смотреть в выводе smartctl:
Reallocated_Sector_Ct— переназначенные секторы. Любое ненулевое значение — признак деградации дискаCurrent_Pending_Sector— нестабильные секторы которые ещё не переназначеныOffline_Uncorrectable— сектора которые нельзя прочитатьSMART overall-health self-assessment: PASSED/FAILED— итоговый вердикт
Запустить быстрый встроенный тест (занимает 1-2 минуты):
sudo smartctl -t short /dev/sda
Посмотреть результат через несколько минут:
sudo smartctl -l selftest /dev/sda
Файловая система: проверка и исправление
fsck проверяет файловую систему и исправляет ошибки. Важно: запускать только на размонтированном разделе.
Проверить корневую ФС при следующей загрузке — создать файл-маркер:
sudo touch /forcefsck
При следующем старте система автоматически запустит проверку.
Проверить отдельный раздел вручную (предварительно размонтировать):
sudo umount /dev/sda1
sudo fsck -f /dev/sda1
Флаг -f форсирует проверку даже если ФС помечена как чистая. -y автоматически исправляет все найденные ошибки без вопросов:
sudo fsck -fy /dev/sda1
Оперативная память: поиск битых ячеек
Ошибки памяти — причина самых странных багов: случайные падения программ, повреждение файлов, kernel panic без видимой причины.
memtest86 — загрузочный инструмент, работает до старта операционной системы. Установить в GRUB:
sudo apt install memtest86+
sudo update-grub
Перезагрузить, в меню GRUB выбрать memtest86+. Полный тест занимает несколько часов — лучше оставить на ночь.
stress-ng — нагрузочный тест прямо из запущенной системы. Нагрузить CPU, RAM и I/O на 60 секунд:
sudo apt install stress-ng
sudo stress-ng --cpu 4 --io 2 --vm 1 --vm-bytes 512M --timeout 60s --metrics-brief
Если система зависает или падает во время теста — проблема с железом. Флаг --metrics-brief покажет количество операций в секунду для каждого воркера.
Сеть: обрывы, потери пакетов, маршрут
Проверить базовую связность с потерями пакетов — расширенный ping:
ping -c 20 8.8.8.8
В строке статистики: 0% packet loss — всё хорошо. Любой процент потерь — проблема на маршруте.
Маршрут до хоста и задержка на каждом узле:
traceroute 8.8.8.8
Или mtr — объединяет ping и traceroute, обновляет данные в реальном времени:
sudo apt install mtr
mtr 8.8.8.8
Ошибки на сетевых интерфейсах — битые пакеты, коллизии:
ip -s link
Строки errors и dropped в выводе — если не ноль, проблема на уровне сетевого интерфейса или кабеля.
Полная картина за один проход
Скрипт который собирает ключевые метрики для быстрой диагностики:
echo "=== Ошибки ядра ===" && dmesg -T --level=err | tail -20
echo "=== Ошибки systemd ===" && journalctl -p err -b --no-pager | tail -20
echo "=== Диск ===" && df -h
echo "=== Память ===" && free -h
echo "=== Нагрузка ===" && uptime
Запустить и сохранить вывод в файл для анализа:
bash -c 'echo "=== dmesg errors ===" && dmesg -T --level=err | tail -20 && echo "=== journalctl errors ===" && journalctl -p err -b --no-pager | tail -20' > /tmp/diagnostics.txt
Шпаргалка
| Что проверяем | Команда |
|---|---|
| Ошибки ядра | dmesg -T --level=err,warn |
| Ошибки systemd за эту загрузку | journalctl -p err -b |
| Ошибки за прошлую загрузку | journalctl -p err -b -1 |
| Состояние диска S.M.A.R.T. | sudo smartctl -a /dev/sda |
| Быстрый тест диска | sudo smartctl -t short /dev/sda |
| Проверка файловой системы | sudo fsck -f /dev/sda1 |
| Нагрузочный тест железа | sudo stress-ng --cpu 4 --vm 1 --vm-bytes 512M --timeout 60s |
| Потери пакетов | ping -c 20 8.8.8.8 |
| Маршрут с задержками | mtr 8.8.8.8 |
| Ошибки сетевого интерфейса | ip -s link |