Диагностика Linux: сервис, сеть, права, память и диск
Сервис не отвечает, хотя процесс запущен. Или диск показывает свободное место, но запись заканчивается ошибкой. Вместо перебора настроек зафиксируйте симптом: какая операция не проходит, от какого пользователя, по какому адресу и с каким сообщением. Ниже — маршрут по проверкам и разборы конкретных случаев. Начинайте с раздела, который соответствует наблюдаемой ошибке.
Процесс есть, ответа нет
Разделите запуск процесса и готовность приложения. Проверьте журнал, порт и адрес прослушивания. Успешный запрос с самого сервера ещё не проверяет путь клиента через сеть, прокси или контейнер.
- Connection refused: как проверить, где приложение слушает порт
- Запрос тормозит при установленном TCP: что покажут retrans и rtt в ss
- dig находит адрес, приложение нет: сравниваем DNS и системное разрешение имён
Разобраться с процессами Linux.
Файл доступен вам, но не сервису
Проверяйте действие от фактической учётной записи процесса. Важны весь путь к файлу, группы уже запущенного процесса и правила создания новых файлов. Изменение прав одного файла не объясняет все отказы.
- Permission denied при доступном файле: проверяем права каталогов по пути
- Пользователь добавлен в группу, а сервис не получил доступ
- Общий каталог работает только со старыми файлами: задаём default ACL
Место или память заканчиваются непонятно где
Сначала установите, какой ресурс измеряется: байты, inode, открытые дескрипторы, RSS отдельных процессов или лимит группы. Для диска сравните занятость файловой системы с видимыми файлами; для памяти — показания процесса с ограничениями его окружения.
- Файл удалён, а место не освободилось: открытые файлы в Linux
- No space left on device при свободном месте: проверяем inode
- Память нескольких worker-процессов: почему сумма RSS завышает расход
Прочитать логи и код завершения контейнера.
Скрипт работает вручную, но падает по расписанию
Сравните рабочую папку, окружение, пользователя и коды возврата команд. Сохраните вывод ошибочного запуска. Если задача может выполняться дольше интервала расписания, отдельно проверьте пересечение запусков.
- Bash-скрипт сообщил об успехе после ошибки: код возврата и pipefail
- Cron запустил второй экземпляр скрипта: блокировка через flock
- EnvironmentFile в systemd: почему переменная работает в терминале, но не в сервисе
Разобрать запуск задач через cron.
Продолжить обучение
Если отдельные проверки понятны, но трудно собрать последовательную диагностику, изучите программу Linux и Bash для DevOps-инженеров. Для работы с приложением в контейнерах пригодится подборка разборов Docker и Compose: там отдельно разобраны запуск, конфигурация, сети, тома и завершение процесса.
Продолжить на практике
- Linux и Bash для DevOps-инженеров ↗
Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.
