SystemdDoctor
служба не работает цели риск

systemctl isolate остановил всё лишнее

Переход в цель — не то же, что её запуск. Он останавливает всё, что в новую цель не входит, включая службы, которые вы не собирались трогать. На работающем сервере это равносильно частичной остановке системы, и отменить это одной командой нельзя.

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

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

  1. Переход в цель вместо её запуска

    Команда перехода останавливает службы, не входящие в цель. Запуск цели такого не делает.

  2. Цель не помечена как допустимая для перехода

    Переход возможен только в цели с соответствующей меткой. Прочие цели команда отвергает.

  3. Службы после перехода нужно запускать вручную

    Остановленные переходом службы сами не вернутся. Возврат в прежнюю цель запустит только то, что в неё входит.

Диагностика

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

Общее состояние системы: degraded указывает на отказавшие unit.

systemctl is-system-running

Что осталось в состоянии сбоя.

systemctl list-units --state=failed --no-legend

Какие цели активны сейчас.

systemctl list-units --type=target --state=active --no-legend

Решение

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

1. Переход в цель вместо её запуска
Почему происходит
Команда перехода останавливает службы, не входящие в цель. Запуск цели такого не делает.
Как проверить
Посмотрите, что осталось активным и какая цель действует.
systemctl get-default; systemctl list-units --type=target --state=active --no-legend
systemctl list-units --state=failed --no-legend | head
Как исправить
Для запуска цели используйте обычный запуск, а не переход. Переход применяется осознанно при смене режима работы системы.
sudo systemctl start multi-user.target
2. Цель не помечена как допустимая для перехода
Почему происходит
Переход возможен только в цели с соответствующей меткой. Прочие цели команда отвергает.
Как проверить
Посмотрите метку цели.
systemctl show multi-user.target -p AllowIsolate
Как исправить
Проверьте метку допустимости перехода перед использованием команды. Её отсутствие — защита от ровно такой ошибки.
3. Службы после перехода нужно запускать вручную
Почему происходит
Остановленные переходом службы сами не вернутся. Возврат в прежнюю цель запустит только то, что в неё входит.
Как проверить
Посмотрите, что не запущено из включённого.
systemctl list-unit-files --state=enabled --no-legend | awk '{print $1}' | head -20
systemctl is-system-running
Как исправить
Вернитесь в нужную цель и проверьте состояние включённых служб по списку. Часть придётся запустить вручную.

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

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

systemd[1]: Stopping nginx.service - A high performance web server...
systemd[1]: Stopping postgresql.service - PostgreSQL RDBMS...
systemd[1]: Stopped target multi-user.target - Multi-User System.
systemd[1]: Reached target rescue.target - Rescue Mode.

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

Источники

  • systemd.target(5)
    AllowIsolate= и назначение целей.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • systemctl(1)
    Разница между запуском цели и переходом в неё.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на тестовой машине: переход в цель восстановления остановил прикладные службы.
    собственная проверка, systemd 255
    сверено 15 сентября 2026