SystemdDoctor
служба не работает частое конфигурация daemon-reload

Unit … not found: unit-файл не найден

Сообщение вида Failed to start myapp.service: Unit myapp.service not found значит, что systemd не знает такого unit. Файл либо лежит не там, где его ищут, либо создан только что и ещё не прочитан, либо в имени опечатка.

Что это значит

systemd ищет unit-файлы в нескольких каталогах по порядку: /etc/systemd/system (ваши файлы и переопределения), /run/systemd/system (временные), /usr/lib/systemd/system (файлы пакетов). Файл, положенный в любое другое место, не будет найден.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Файл создан, но systemd о нём ещё не знает

    Список unit кешируется. Пока не выполнена перезагрузка конфигурации, новый файл для systemd не существует.

  2. Файл лежит не в том каталоге

    Частая ошибка — положить unit в /etc/systemd (без system), в домашний каталог или в /lib/systemd/user. systemd такие файлы не подхватит.

  3. Не указано расширение или в имени опечатка

    Без расширения systemd достраивает .service, но в зависимостях и в шаблонах это работает не всегда. Имя с точкой внутри тоже часто трактуют неверно.

  4. Файл — символическая ссылка в никуда

    Ссылка осталась после удаления пакета или перемещения файла. systemd считает такой unit несуществующим.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Показывает, знает ли systemd про этот unit и в каком он состоянии.

systemctl list-unit-files | grep -i myapp

Если unit найден, печатает его содержимое с путём. Если нет — честно сообщает об отсутствии.

systemctl cat myapp.service

Ищет файл по всем каталогам, где systemd мог бы его искать.

sudo find /etc/systemd /usr/lib/systemd /run/systemd -name "*myapp*" 2>/dev/null

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Файл создан, но systemd о нём ещё не знает
Почему происходит
Список unit кешируется. Пока не выполнена перезагрузка конфигурации, новый файл для systemd не существует.
Как проверить
Проверьте, видит ли systemd файл.
systemctl list-unit-files | grep myapp
ls -l /etc/systemd/system/myapp.service
Как исправить
Перечитайте конфигурацию и запустите службу.
sudo systemctl daemon-reload && sudo systemctl start myapp.service
2. Файл лежит не в том каталоге
Почему происходит
Частая ошибка — положить unit в /etc/systemd (без system), в домашний каталог или в /lib/systemd/user. systemd такие файлы не подхватит.
Как проверить
Посмотрите, где systemd вообще ищет unit-файлы.
systemd-analyze --system unit-paths 2>/dev/null || systemctl show --property=UnitPath | tr " " "\n" | head
Как исправить
Перенесите файл в /etc/systemd/system и выполните перезагрузку конфигурации.
sudo mv myapp.service /etc/systemd/system/ && sudo systemctl daemon-reload
3. Не указано расширение или в имени опечатка
Почему происходит
Без расширения systemd достраивает .service, но в зависимостях и в шаблонах это работает не всегда. Имя с точкой внутри тоже часто трактуют неверно.
Как проверить
Посмотрите точное имя файла и то, что вы вводите.
systemctl list-unit-files "*myapp*"
Как исправить
Используйте полное имя с расширением. Если unit шаблонный, имя должно включать экземпляр: myapp@prod.service.
4. Файл — символическая ссылка в никуда
Почему происходит
Ссылка осталась после удаления пакета или перемещения файла. systemd считает такой unit несуществующим.
Как проверить
Проверьте ссылки в каталогах автозапуска.
sudo find /etc/systemd/system -xtype l -name "*myapp*"
Как исправить
Удалите битые ссылки и перечитайте конфигурацию.
sudo find /etc/systemd/system -xtype l -delete && sudo systemctl daemon-reload

Пример вывода

Unit создан, но конфигурация не перечитана. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ sudo systemctl start myapp.service
Failed to start myapp.service: Unit myapp.service not found.

systemd[1]: myapp.service: Unit not found.

Связанные ошибки

Источники

  • systemd.unit(5)
    Каталоги поиска unit-файлов и порядок их обхода.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено созданием unit без daemon-reload и файлом в /etc/systemd.
    собственная проверка, systemd 255
    сверено 15 сентября 2026