Содержание

Диагностика Linux: от симптома к причине

В Linux важно сначала сохранить факты, а уже потом перезапускать сервис. Формулировка «сайт не открывается» слишком общая. Полезнее записать: «Nginx отвечает 502 с 14:20, сам Nginx запущен, приложение на 127.0.0.1:3000 не слушает порт».

date -Is hostnamectl uptime free -h df -hT lsblk -f
  1. Сверьте время и часовой пояс: неверное время ломает сертификаты, журналы и авторизацию.
  2. Посмотрите среднюю нагрузку и доступную память, но не делайте вывод только по одному числу.
  3. Проверьте заполнение дисков и inode: сервис может остановиться даже при наличии гигабайтов, если закончились inode.
  4. Запишите, на каком разделе находятся данные проблемного сервиса.
df -ih ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 12 ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 12

Пример: каталог /var заполнен на 100%, поэтому база данных не может создать временный файл. Перезапуск базы ничего не исправит: сначала нужно найти причину роста, освободить место безопасным способом и проверить целостность сервиса.

systemctl --failed systemctl status ИМЯ_СЕРВИСА --no-pager journalctl -u ИМЯ_СЕРВИСА --since "1 hour ago" --no-pager
  1. Сопоставьте время ошибки приложения с журналом systemd.
  2. Проверьте зависимости сервиса и порт, который он должен слушать.
  3. Если процесс завершается, сохраните код выхода и последние строки журнала.
systemctl list-dependencies ИМЯ_СЕРВИСА ss -lntup journalctl -k --since "1 hour ago" --no-pager
ip -brief address ip route ip route get 1.1.1.1 resolvectl status ss -lntup

Пример: имя сайта не разрешается, но подключение к IP проходит. Это указывает на DNS, а не на «отсутствие интернета». Сначала сравните DNS-серверы и результат запроса, не меняя сразу сетевой конфиг.

☝️
Не маскируйте симптом
Не очищайте журналы и не перезапускайте весь сервер до сохранения диагностических данных. Сначала определите конкретный сервис и зависимость.
  1. Повторите исходную проверку с клиента и с самого сервера.
  2. Убедитесь, что сервис активен, порт слушается, а новые ошибки не появляются.
  3. Запишите причину, изменение, результат и команду отката.

Для Ubuntu используйте актуальные разделы Ubuntu Server documentation; параметры systemd сверяйте с официальными man-страницами systemd.