SystemdDoctor

Автозапуск настроен ссылкой вручную

Команда включения делает больше, чем просто ссылку: она учитывает Also=, Alias=, наборы предустановок и записывает состояние так, как ожидают остальные команды. Ссылка, созданная вручную, работает, но состояние включения может отображаться неверно.

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

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

  1. Ссылка создана вручную с неверным путём

    Относительная ссылка или ссылка на несуществующий файл выглядит правдоподобно, но unit не запускается.

  2. Не учтены связанные unit

    При Also= команда включения поднимает и сокет, и таймер. Ручная ссылка включает только один unit.

  3. Состояние включения показывается неверно

    Команда проверки состояния смотрит и на ссылки, и на наборы предустановок. Ручное вмешательство даёт расхождение между «ссылка есть» и «состояние disabled».

Диагностика

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

Состояние автозапуска по мнению systemd.

systemctl is-enabled myapp.service

Битые ссылки, оставшиеся от ручных правок.

sudo find /etc/systemd/system -xtype l

Все связанные unit и их состояния.

systemctl list-unit-files "myapp*"

Решение

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

1. Ссылка создана вручную с неверным путём
Почему происходит
Относительная ссылка или ссылка на несуществующий файл выглядит правдоподобно, но unit не запускается.
Как проверить
Посмотрите ссылки в каталоге цели.
ls -l /etc/systemd/system/multi-user.target.wants/ | grep myapp
sudo find /etc/systemd/system -xtype l
Как исправить
Удалите ручную ссылку и выполните обычное включение: systemctl enable myapp.service.
2. Не учтены связанные unit
Почему происходит
При Also= команда включения поднимает и сокет, и таймер. Ручная ссылка включает только один unit.
Как проверить
Посмотрите состояние всех связанных unit.
systemctl is-enabled myapp.service myapp.socket myapp.timer 2>/dev/null
Как исправить
Включите через команду: она разберётся со связями сама.
3. Состояние включения показывается неверно
Почему происходит
Команда проверки состояния смотрит и на ссылки, и на наборы предустановок. Ручное вмешательство даёт расхождение между «ссылка есть» и «состояние disabled».
Как проверить
Сравните состояние и наличие ссылки.
systemctl is-enabled myapp.service; ls -l /etc/systemd/system/*.wants/myapp.service 2>/dev/null
Как исправить
Приведите состояние в порядок: systemctl disable затем systemctl enable.

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

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

$ ls -l /etc/systemd/system/multi-user.target.wants/myapp.service
lrwxrwxrwx 1 root root 34 Sep 10 11:20 myapp.service -> ../myapp.service

$ sudo find /etc/systemd/system -xtype l
/etc/systemd/system/multi-user.target.wants/myapp.service

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

Источники

  • systemctl(1)
    Команды enable, disable, preset и работа со ссылками.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено ручной ссылкой с относительным путём: unit не запускается.
    собственная проверка, systemd 255
    сверено 15 сентября 2026