SystemdDoctor
мешает работе зависимости управление

Transaction for … is destructive

Сообщение о разрушительной транзакции означает, что запрошенная операция потребовала бы остановки unit, которые останавливать нельзя. systemd отказывается целиком, вместо того чтобы сделать половину работы.

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

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

  1. Операция конфликтует с работающими unit

    Запуск цели или изоляция состояния требует остановки того, что сейчас работает и помечено как неостановимое.

  2. Изоляция цели на работающей системе

    Команда изоляции останавливает всё, что не входит в цель. На рабочем сервере это почти всегда не то, чего вы хотели.

  3. Unit защищён от остановки

    Параметр запрета ручной остановки или жёсткие связи делают unit неостановимым в рамках транзакции.

Диагностика

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

Текущие задания: транзакция могла столкнуться с ними.

systemctl list-jobs

Сообщения о конфликтах транзакций.

journalctl -b --no-pager | grep -iE "destructive|conflicting" | tail -10

Решение

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

1. Операция конфликтует с работающими unit
Почему происходит
Запуск цели или изоляция состояния требует остановки того, что сейчас работает и помечено как неостановимое.
Как проверить
Посмотрите, что мешает.
systemctl list-jobs
journalctl -b --no-pager | grep -i destructive | tail -5
Как исправить
Выполняйте операцию точнее: запускайте нужные unit по одному вместо изоляции цели.
2. Изоляция цели на работающей системе
Почему происходит
Команда изоляции останавливает всё, что не входит в цель. На рабочем сервере это почти всегда не то, чего вы хотели.
Как проверить
Посмотрите, что входит в цель.
systemctl list-dependencies имя.target --no-pager | head -20
Как исправить
Вместо изоляции используйте обычный запуск цели или переключение цели по умолчанию с перезагрузкой.
3. Unit защищён от остановки
Почему происходит
Параметр запрета ручной остановки или жёсткие связи делают unit неостановимым в рамках транзакции.
Как проверить
Посмотрите параметры защиты.
systemctl show имя.service -p RefuseManualStop -p BindsTo
Как исправить
Снимите защиту осознанно или выполните операцию так, чтобы этот unit не затрагивался.

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

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

$ sudo systemctl isolate rescue.target
Failed to isolate rescue.target: Transaction for rescue.target/start is destructive (multi-user.target has 'stop' job queued, but 'start' is included in transaction).

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

Источники

  • systemctl(1)
    Команда isolate и транзакции заданий.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено попыткой изоляции цели восстановления на работающей системе.
    собственная проверка, systemd 255
    сверено 15 сентября 2026