#Что происходит и когда это важно
Команда systemctl start ИМЯ.service выдаёт «Unit ... not found» после перемещения/переименования. Не путайте с status=203/EXEC, когда unit найден, но его исполняемый файл не запускается.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Файл в неправильном каталогеsystemd ищет unit по определённым системным/пользовательским путям. | systemctl cat сообщает unit not found. | Сверить путь, название и расширение .service. |
| Менеджер не перечитал файлыФайл перемещён, но в systemd осталась старая схема. | После согласованного daemon-reload юнит появляется. | Выполнить перечитывание без перезагрузки системы. |
| Имя изменено, зависимость осталасьТаймер или другой unit ссылается на старое имя. | В журнале упоминается прежнее название. | Исправить только необходимые ссылки и проверить установку. |
#Пошаговая диагностика и исправление
- Проверьте полное имяОткройте терминал, уточните файл: его название должно оканчиваться
.service, учитывайте регистр букв. Для пользовательской службы используйтеsystemctl --user; системную не ищите в~/.config/systemd/user. - Проверьте, видит ли её systemdВыполните
systemctl cat ИМЯ.service. Если видите содержимое файла, unit найден; проверьте правильность имени в команде запуска. ЕслиNo files found, выясняйте расположение. Если файл обнаружен, но после перемещения имя старое, его нужно уточнить до перезапуска. - Проверьте назначенный путь без перемещенияВыполните
systemctl show -p FragmentPath ИМЯ.serviceиls -l /etc/systemd/system/ИМЯ.service. Для локальных пользовательских служб обычный путь —~/.config/systemd/user/, но пути могут отличаться. Если файл вообще отсутствует, найдите исходную копию в резервном каталоге, не создавайте пустой unit. - Убедитесь, что содержимое unit корректноЕсли файл существует, выполните
systemd-analyze verify /etc/systemd/system/ИМЯ.serviceс настоящим путём. Утилита может сообщать предупреждения о зависимостях, которых нет на данном ПК. Сначала исправьте синтаксические ошибки и опечатки, не переименовывая случайные службы. - Перечитайте конфигурацию после подтверждённого перемещенияСистемный администратор выполняет
sudo systemctl daemon-reload. Это перечитывает unit-файлы, не запускает и не перезапускает всю систему. Для пользовательской службы нужно выполнитьsystemctl --user daemon-reloadот нужного пользователя, без sudo. - Проверьте работу и настройку автозапускаПовторите
systemctl catиsystemctl status. При необходимости администратор запускает службу штатно. Если она имела автозапуск под старым именем, проверьтеsystemctl is-enabledи исправьте зависимости/таймеры отдельно; резервную копию старого файла сохраните до проверки.
#Команды из инструкции с пояснениями
systemctl cat ИМЯ.servicesystemctl show -p FragmentPath ИМЯ.servicesudo systemctl daemon-reloadКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
#Как проверить результат
Правильный unit появляется в systemctl cat, команда проверки синтаксиса не показывает критических ошибок, служба запускается при штатном условии.
#Если проблема не устранена
Если unit не находится и после daemon-reload, сравните точное имя файла, суффикс, тип менеджера (--user или системный) и пути поиска; проблему нельзя устранить только повторным reload.