SystemdDoctor

Operation refused, unit may be requested by dependency only

Сообщение «Operation refused, unit … may be requested by dependency only» означает, что в unit-файле стоит RefuseManualStart=yes. Такой unit запускается только как зависимость другого — обычно это служебная часть большей системы, которую нельзя запускать в отрыве.

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

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

  1. Unit помечен как запускаемый только по зависимости

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

  2. Запрет унаследован от чужого шаблона unit-файла

    Параметр скопировали из примера, не поняв смысла. Тогда запрет мешает без пользы.

Диагностика

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

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

systemctl show myapp.service -p RefuseManualStart -p RefuseManualStop

Кто тянет этот unit: его и надо запускать.

systemctl list-dependencies --reverse myapp.service --no-pager | head

Решение

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

1. Unit помечен как запускаемый только по зависимости
Почему происходит
Так поступают с вспомогательными unit: они предполагают, что перед ними что-то подготовлено. Ручной запуск в обход подготовки оставил бы систему в странном состоянии.
Как проверить
Посмотрите параметр и то, кто зависит от этого unit.
systemctl show myapp-helper.service -p RefuseManualStart -p RefuseManualStop
systemctl list-dependencies --reverse myapp-helper.service --no-pager
Как исправить
Запускайте тот unit, который тянет вспомогательный: обычно это основная служба или цель. Так подготовка выполнится по порядку.
2. Запрет унаследован от чужого шаблона unit-файла
Почему происходит
Параметр скопировали из примера, не поняв смысла. Тогда запрет мешает без пользы.
Как проверить
Посмотрите, ваш ли это файл и есть ли у него смысл быть зависимым.
systemctl cat myapp.service | grep -i refusemanual
Как исправить
Уберите параметр, если служба должна запускаться вручную. Ставить его стоит только осознанно.

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

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

$ sudo systemctl start myapp-helper.service
Failed to start myapp-helper.service: Operation refused, unit myapp-helper.service
may be requested by dependency only (it is configured to refuse manual start/stop).

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

Источники

  • systemd.unit(5)
    RefuseManualStart= и RefuseManualStop=.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на unit с RefuseManualStart=yes.
    собственная проверка, systemd 255
    сверено 15 сентября 2026