SystemdDoctor

WantedBy= в неверной секции: автозапуск не работает

Если WantedBy= стоит в секции [Unit], systemd его отбрасывает как незнакомый параметр. Служба при этом работает: её можно запустить вручную, она проходит проверку. Но автозапуска нет, и обнаруживается это только после перезагрузки сервера.

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

Похожие по написанию параметры живут в разных секциях: Wants= и WantedBy=. Первый в [Unit] означает «эта служба хочет запустить другую». Второй в [Install] означает «эту службу должна хотеть указанная цель». Перепутать их легко, а последствия разные.

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

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

  1. Параметр перенесён по памяти в секцию [Unit]

    В [Unit] действительно есть похожий по имени Wants=, поэтому глаз не цепляется за ошибку. systemd в журнале отмечает незнакомый параметр, но эту строку редко читают.

  2. Служба «включена», но ссылки нет

    Если enable выполняли до исправления файла, ссылки в каталоге цели не появилось. Состояние может выглядеть как enabled из-за остатков прежних попыток.

  3. Указана цель, которая не запускается на этой машине

    WantedBy=graphical.target на сервере без графики не даст автозапуска: цель не достигается. Ссылка есть, а служба не поднимается.

Диагностика

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

Сообщает про незнакомые параметры, включая этот случай.

systemd-analyze verify /etc/systemd/system/myapp.service

Ссылки автозапуска. Отсутствие вашей службы — прямой ответ, почему она не поднимается.

ls -l /etc/systemd/system/multi-user.target.wants/

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

systemctl is-enabled myapp.service

Решение

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

1. Параметр перенесён по памяти в секцию [Unit]
Почему происходит
В [Unit] действительно есть похожий по имени Wants=, поэтому глаз не цепляется за ошибку. systemd в журнале отмечает незнакомый параметр, но эту строку редко читают.
Как проверить
Посмотрите файл и проверку.
systemctl cat myapp.service | grep -n -B3 WantedBy
systemd-analyze verify /etc/systemd/system/myapp.service
Как исправить
Перенесите параметр в [Install], перечитайте конфигурацию и включите службу заново — ссылка автозапуска создаётся именно командой включения.
sudo systemctl daemon-reload && sudo systemctl enable myapp.service
2. Служба «включена», но ссылки нет
Почему происходит
Если enable выполняли до исправления файла, ссылки в каталоге цели не появилось. Состояние может выглядеть как enabled из-за остатков прежних попыток.
Как проверить
Проверьте наличие ссылки в каталоге цели.
ls -l /etc/systemd/system/multi-user.target.wants/ | grep myapp
systemctl is-enabled myapp.service
Как исправить
Выполните включение заново после правки файла и убедитесь, что ссылка появилась.
3. Указана цель, которая не запускается на этой машине
Почему происходит
WantedBy=graphical.target на сервере без графики не даст автозапуска: цель не достигается. Ссылка есть, а служба не поднимается.
Как проверить
Посмотрите цель по умолчанию и достигается ли указанная.
systemctl get-default
systemctl is-active multi-user.target graphical.target
Как исправить
Для серверных служб указывайте multi-user.target.

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

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

$ systemctl cat myapp.service
# /etc/systemd/system/myapp.service
[Unit]
Description=My application
After=network.target
WantedBy=multi-user.target

[Service]
ExecStart=/usr/local/bin/myapp

$ sudo systemctl enable myapp.service
The unit files have no installation config (WantedBy=, RequiredBy=, Also=, Alias= settings
in the [Install] section...)

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

Источники

  • systemd.unit(5)
    Разделение параметров по секциям [Unit] и [Install].
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено переносом WantedBy= в [Unit]: служба запускается вручную, автозапуска нет.
    собственная проверка, systemd 255
    сверено 15 сентября 2026