systemd показывает active, но приложение не отвечает — как найти причину и исправить

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

В Arch Linux systemd показывает для службы active (running), но её интерфейс, веб-сайт или обработка запросов не работает. При Type=simple systemd не ждёт готовности приложения; состояние процесса не является проверкой доступности сервиса.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и признаки
  3. Подробная диагностика и безопасные действия
  4. Как понять, что проблема устранена
  5. Что делать, если не помогло

#Симптом и границы применимости

В Arch Linux systemd показывает для службы active (running), но её интерфейс, веб-сайт или обработка запросов не работает. При Type=simple systemd не ждёт готовности приложения; состояние процесса не является проверкой доступности сервиса.

#Возможные причины и признаки

Возможная причинаКак узнатьЧто делать
Процесс жив, но не слушает нужный портПриложение ещё инициализируется, не смогло открыть socket или слушает другой адрес.active есть, в ss отсутствует нужный LISTEN.Исправить bind/порт по журналу приложения.
Отказ зависимостиПриложение запустилось, но не видит БД, брокер сообщений, DNS или том с данными.В логе connection refused, timeout или unable to resolve.Проверить внешнюю зависимость отдельно, не перезапускать всё подряд.
Ограничения модели готовности службыType=simple не гарантирует, что HTTP или другая функция готовы обслуживать запросы.Status=active сразу после fork/exec, но health endpoint отвечает ошибкой.Настроить проверку готовности на уровне приложения или поддерживаемый Type=notify.

#Подробная диагностика и безопасные действия

  1. 1. Подтвердите статус и тип службыОткройте терминал. Подставьте имя реального юнита; команды показывают ActiveState, SubState, Type и MainPID. Успешный systemctl is-active означает состояние менеджера, а не успешный ответ приложения.
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl status ИМЯ.service --no-pager
    systemctl show ИМЯ.service -p ActiveState -p SubState -p Type -p MainPID
  1. 2. Найдите реальные сообщения приложенияПрочитайте журнал текущей загрузки и посмотрите ошибки после момента запуска. Сообщения DB connection refused, permission denied или cannot bind требуют разных действий. Не удаляйте журнал ради «очистки ошибки».
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    journalctl -b -u ИМЯ.service --no-pager -n 100
  1. 3. Проверьте, слушает ли нужный портУстановите из документации программы нужный TCP/UDP-порт. Пример 8080 замените на ваш порт; ss -ltnp покажет слушающие сокеты и владельцев при наличии прав. Если порта нет, выясняйте причину по журналу, а не по firewall.
  2. Только диагностический вывод: список активных TCP/UDP-сокетов без изменения настроек
    Linux · Терминал (Bash)КомандаНужен sudo
    Только диагностический вывод: список активных TCP/UDP-сокетов без изменения настроек.
    sudo ss -ltnp
    sudo ss -lunp
  1. 4. Проверьте локальное соединение, отделив сетьЕсли сервис должен отвечать на HTTP на localhost:8080, выполните пример, подставив правильный порт и протокол. Код 200/302 может быть нормой, 503 — ошибка приложения, connection refused — соединение не принимается. Не посылайте запросы на неизвестные административные адреса.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    curl -I --max-time 5 http://127.0.0.1:8080/
  1. 5. Сопоставьте bind-address и интерфейсыЕсли локальный запрос проходит, но с другого узла нет, найдите фактический адрес прослушивания и маршруты. Привязка к 127.0.0.1 запрещает внешний доступ; раскрывать сервис на 0.0.0.0 без проверки firewall и аутентификации опасно.
  2. Только просмотр сетевых адресов; не открывайте внешние порты автоматически
    Linux · Терминал (Bash)КомандаНужен sudo
    Только просмотр сетевых адресов; не открывайте внешние порты автоматически.
    ip -br address
    sudo ss -ltnp
  1. 6. Проверьте зависимую службу конкретно по ошибкеЕсли журнал сообщает о недоступной БД или сокете, найдите именно названную зависимость, проверьте её статус и доступность. Ошибка DNS может иметь собственную причину. Не перезапускайте SSH, firewall и сетевой менеджер одновременно.
  2. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl list-dependencies ИМЯ.service --no-pager
    systemctl --failed --no-pager
  1. Диагностическая команда в терминале Arch Linux, без изменения настроек
    Linux · Терминал (Bash)Команда
    Диагностическая команда в терминале Arch Linux, без изменения настроек.
    systemctl is-active ИМЯ.service
    curl -I --max-time 5 http://127.0.0.1:8080/
    journalctl -b -u ИМЯ.service --no-pager -n 40
  2. 7. Проверьте результат на прикладном уровнеПосле адресного исправления повторите локальную команду и реальную операцию пользователя (например, открытие собственной страницы входа или тестового API), сопоставьте статус с журналом. Если приложение не готово, но unit active, рассмотрите поддерживаемую приложением readiness/Type=notify, не вписывая Type=notify в unit без поддержки протокола.

#Как понять, что проблема устранена

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

#Что делать, если не помогло

Не применяйте случайные советы для другого дистрибутива: в Arch Linux особенно опасны частичные обновления пакетов, а в Rocky Linux — отключение SELinux или неконтролируемый перезапуск системных служб. Остановитесь после неуспешного безопасного шага, зафиксируйте фактическое сообщение и вернитесь к соответствующей причине. Для загрузки, разделов диска и единственного удалённого подключения используйте резервную копию и локальную консоль.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.