Debian Linux

Debian: служба systemd не запускается — диагностика через journalctl

  • Обновлено
  • Чтение ≈ 3 минуты

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

Посмотрите статус systemctl status и журнал journalctl -xeu служба. Причины — ошибки конфига, порт, права.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Статус и журнал
  5. Юнит и конфигурация
  6. Ручной запуск и права

#Что означает ошибка

Сообщение
Служба не запускается

Если systemctl status показывает failed или activating (auto-restart), причину нужно искать в журнале systemd (journalctl) и в самом юните. Статус status=203/EXEC, 217/USER, 226/NAMESPACE, 1/FAILURE подсказывают класс проблемы.

Запомните последовательность: статус → журнал → юнит → запуск вручную.

Она подходит для любого сервиса.

Посмотрите статус systemctl status и журнал journalctl -xeu служба. Причины — ошибки конфига, порт, права.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Ошибка конфигаФайл.Failed.Исправьте.
Порт занятКонфликт.Failed.Освободите.
ПраваФайлы.Failed.Исправьте.
Нет зависимостиПакет.Failed.Установите.

#Пошаговое решение

  1. Выполните systemctl status -lВ терминале Debian сначала узнайте точное имя службы из сообщения об ошибке, например ssh.service или nginx.service. Запустите systemctl status ssh.service --full --no-pager, заменив пример на свою службу. Запишите значения Loaded, Active и первую причину сбоя; failed означает, что служба не запустилась, а не то, что её надо немедленно переустановить. На удалённом сервере не перезапускайте SSH или сеть без запасного доступа.
  2. Прочитайте journalctl -uПосле определения полного имени службы выполните journalctl -u ssh.service -b --no-pager -n 80, заменив ssh.service на реальное имя из systemctl status. Смотрите записи непосредственно перед Failed и exit-code, а не только последнюю строчку. Если журнал требует прав, добавьте sudo. Сохраните текст ошибок и сначала исправьте указанную конфигурацию, занятый порт или отсутствующий файл; без диагностики не перезапускайте службу по кругу.
  3. Проверьте юнит systemctl catВ терминале выполните systemctl cat ssh.service, заменив ssh.service на имя исследуемого юнита. Посмотрите ExecStart, User, EnvironmentFile и дополнительные файлы в *.d/. Проверьте существование указанных путей и права чтения, ничего не меняя. Если юнит редактировался вручную, сохраните копию перед исправлением; после изменения потребуется sudo systemctl daemon-reload, но только для администраторов, понимающих влияние на службу.
  4. Запустите команду вручнуюВ выводе systemctl cat ИМЯ.service найдите строку ExecStart= и рабочий каталог/пользователя службы. Не копируйте эту строку в root-оболочку на боевом сервере вслепую: команда может запускаться от другого пользователя и менять данные. Для диагностики прежде проверьте путь к исполняемому файлу, настройки User=, WorkingDirectory= и файл конфигурации. При необходимости запускайте проверочную подкоманду или штатный --check приложения с теми же правами и в тестовой среде; если есть ошибка, запишите её до изменения юнита.
  5. Примените измененияПосле исправления файла пользовательского юнита systemd выполните sudo systemctl daemon-reload, затем sudo systemctl restart ИМЯ.service только в согласованное окно обслуживания: перезапуск может прервать соединения. Если изменён только файл конфигурации приложения, необходимый способ перечитывания зависит от самой службы. Проверьте systemctl status ИМЯ.service --no-pager и journalctl -u ИМЯ.service -n 50 --no-pager. При сбое верните резервную копию конфигурации и повторите проверку.

#Статус и журнал

Выполните systemctl status имя.service -l --no-pager и journalctl -u имя.service -b -n 100 --no-pager. Для живого просмотра: journalctl -u имя.service -f. Коды: 203/EXEC — не найден или не исполняется бинарник (проверьте путь и chmod +x), 217/USER — пользователь не существует, 200/CHDIR — нет рабочей папки, 226/NAMESPACE — проблемы изоляции (ReadWritePaths), 1/FAILURE — приложение само вернуло ошибку.

#Юнит и конфигурация

Покажите итоговый юнит: systemctl cat имя.service. Проверьте ExecStart (абсолютный путь), User, WorkingDirectory, EnvironmentFile. После правки: sudo systemctl daemon-reload && sudo systemctl restart имя. Проверьте синтаксис: systemd-analyze verify /etc/systemd/system/имя.service. Зависимости и порядок: After=network-online.target, Wants=network-online.target.

#Ручной запуск и права

Запустите команду из ExecStart вручную от имени пользователя сервиса: sudo -u user /path/app --config /etc/app.conf — ошибка приложения станет видна сразу. Проверьте порт (ss -ltnp), права на файлы и каталоги, SELinux/AppArmor (journalctl | grep -i apparmor), место на диске (df -h). Сбросьте счётчик перезапусков: systemctl reset-failed имя. Лимиты ресурсов смотрите в systemctl show имя.

Linux · Терминал (Bash)Команда
Статус, журнал и текст юнита проблемной службы (замените имя).
systemctl status имя.service -l --no-pager
journalctl -u имя.service -b -n 100 --no-pager
systemctl cat имя.service

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

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

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