systemd Linux Failed to start

Linux: «Job for … failed» / «Failed to start service» в systemctl

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

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

Сообщение systemd само ошибку не объясняет — причина записана в журнале. Выполните systemctl status имя.service и journalctl -xeu имя.service: там видно, что именно не сработало — ошибка конфигурации, занятый порт, права, отсутствующий файл или нехватка ресурсов.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Если не помогло
  5. Как читать журнал
  6. Ошибки в unit-файле

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

Failed to start
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.
По-русскиНе удалось запустить службу: процесс управления завершился с ошибкой.

Сообщение «Failed to start …service» в systemd означает, что служба запустилась и сразу завершилась с ошибкой либо не смогла стартовать из-за зависимости. Сама фраза ничего не объясняет — причина всегда записана в журнале службы, и работать нужно именно с ним.

Типичные причины: ошибка в конфигурации службы, занятый порт, неверные права на файлы, отсутствующий бинарник, нехватка памяти или места на диске, а также неправильный unit-файл после ручной правки.

systemd запускает службу командой из unit-файла и следит за её завершением. Если процесс завершился с ошибкой или не запустился за отведённое время, служба переходит в состояние failed.

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

Возможная причинаКак узнатьЧто делать
Ошибка в конфигурации службыНеверный синтаксис или параметр в конфигурационном файле.В журнале строка с указанием файла и номера строки.Исправьте конфигурацию, проверьте её командой самой программы (например, nginx -t).
Порт или ресурс уже занятДругой процесс слушает тот же порт.В журнале Address already in use.Найдите процесс ss -ltnp, остановите лишний.
Нет прав или не найден файлНет доступа к каталогу, сертификату, сокету.В журнале Permission denied или No such file or directory.Проверьте права и пути.
Ошибка в unit-файле или зависимостиНеверный ExecStart, не запущена зависимая служба.systemctl status показывает code=exited или Dependency failed.Проверьте unit-файл (systemctl cat), выполните systemctl daemon-reload.

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

  1. Посмотрите статусОткройте терминал сервера и выполните systemctl status имя.service --no-pager -l, подставив точное имя из сообщения Failed to start. Посмотрите Active, Result, ExecStart и status=...; отсутствие процесса не говорит, что виноват сам systemd.
  2. Прочитайте журналПолучите журнал именно этой службы командой sudo journalctl -u имя.service -b -n 100 --no-pager и найдите первую ошибку до сообщения о выходе. Если указан файл конфигурации, порт, каталог или пользователь, проверьте соответствующий объект; не правьте незнакомые сервисы без копии.
  3. Проверьте конфигурациюЕсли у программы есть средство проверки настроек (например, nginx -t, apachectl configtest, php-fpm -t), выполните его до повторного запуска. Сравните фактический ExecStart через systemctl cat имя.service с путями к исполняемому файлу; запуск несуществующего файла выдаёт специфический код 203/EXEC.
  4. Проверьте порт и праваЕсли журнал сообщает Address already in use, проверьте владельца порта командой sudo ss -ltnp; если Permission denied, посмотрите права и пользователя службы systemctl show имя.service -p User,Group. Не убивайте посторонние процессы и не давайте файлам 777.
  5. Замените nginx на имя вашей службы
    Linux · Терминал (Bash)КомандаНужен sudo
    Замените nginx на имя вашей службы. Команды только читают состояние.
    systemctl status nginx.service --no-pager
    journalctl -xeu nginx.service --no-pager | tail -n 40
    sudo ss -ltnp | grep ":80 "
  6. Перезагрузите unit и запуститеПосле точечного исправления выполните sudo systemctl daemon-reload лишь если изменён unit-файл, затем sudo systemctl start имя.service и проверьте systemctl status плюс журнал. Если служба снова падает, соберите её выходной код и новую ошибку; не увеличивайте бесконечно RestartSec.

#Если не помогло

Если служба падает сразу после запуска и сообщений мало, запустите её программу вручную в консоли (команда из ExecStart) от нужного пользователя и посмотрите вывод. Для диагностики зависимостей используйте systemctl list-dependencies.

#Как читать журнал

Команда journalctl -xeu имя.service -n 80 --no-pager показывает последние строки с пояснениями. Ищите слова error, permission denied, address already in use, No such file, exit-code. Код status=203/EXEC значит, что бинарник не найден или не исполняемый, status=217/USER — пользователь из unit-файла не существует, status=200/CHDIR — каталог не найден.

#Ошибки в unit-файле

После любой правки файла службы выполните sudo systemctl daemon-reload, иначе systemd использует старую версию. Проверить синтаксис можно командой systemd-analyze verify /etc/systemd/system/имя.service. Путь в ExecStart должен быть абсолютным, а при запуске скрипта у него должен быть бит исполнения: chmod +x.

Linux · Терминал (Bash)Команда
Статус и журнал службы; имя замените на своё.
systemctl status имя.service -l
journalctl -xeu имя.service -n 80 --no-pager

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

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

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