С какими частыми проблемами и ошибками в Linux вы сталкивались и как их решали?

«С какими частыми проблемами и ошибками в Linux вы сталкивались и как их решали?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

За годы администрирования серверов я выработал подход к решению типовых инцидентов.

Топ-5 частых проблем и алгоритм их решения:

  1. No space left on device (закончилось место на диске).

    • Диагностика: df -h — смотрю, какая файловая система заполнена.
    • Поиск «тяжелых» директорий: du -sh /var/* | sort -rh | head -10.
    • Типовые причины и решение:
      • Логи приложения: Ротация и очистка (например, logrotate).
      • Docker: Очистка неиспользуемых образов и контейнеров: docker system prune -af.
      • Кэш пакетного менеджера: apt clean или yum clean all.
  2. Permission denied (ошибка прав доступа).

    • Проверяю пользователя и группу: ls -la /path/to/file.
    • Исправляю: chown appuser:appgroup /path/to/file и chmod 750 /path/to/file.
    • Важно: Если права корректны, проверяю SELinux/AppArmor:
      # Временное отключение SELinux для диагностики
      setenforce 0
      # Просмотр логов SELinux
      ausearch -m avc -ts recent | audit2why
  3. Address already in use (порт занят).

    • Ищу процесс: ss -tulnp | grep :<PORT> или lsof -i :<PORT>.
    • Принимаю решение: завершить процесс (kill -9 <PID>) или перенастроить приложение на другой порт.
  4. Высокая нагрузка на CPU или память.

    • Смотрю топ процессов: top или htop.
    • Анализирую: если это Java-процесс — проверяю дампы и настройки JVM; если системный процесс — смотрю iotop на предмет нагрузки от I/O.
    • Для анализа использования памяти важно понимать разницу между used и available в выводе free -h. Кэш памяти (buff/cache) Linux отдает приложениям по необходимости.
  5. Недостаток inodes (файловая система полна, но df -h показывает свободное место).

    • Проверяю: df -i.
    • Ищу директории с огромным количеством мелких файлов (часто — сессии, кэш, временные файлы):
      # Найти директории с большим количеством файлов
      find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -rn | head -20

Профилактика: Я настраиваю мониторинг (Prometheus) на ключевые метрики: использование диска, inodes, память, нагрузку. Alertmanager отправляет алерт при достижении пороговых значений (например, >85% использования диска), что позволяет решать проблему проактивно.