SystemdDoctor

Failed to connect to bus: подключение к шине недоступно

Сообщение «Failed to connect to bus» означает, что systemctl не может обратиться к менеджеру через шину. Причина зависит от места: в контейнере менеджера может не быть вовсе, в сеансе по ssh нет пользовательской шины, а у службы нет нужных переменных окружения.

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

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

  1. Команда для менеджера пользователя выполняется без сеанса

    Ключ пользователя требует работающего менеджера пользователя и переменной с адресом шины. В сеансе через ssh или в скрипте их может не быть.

  2. Контейнер без systemd

    В контейнерах с одним процессом менеджера нет. Команды systemctl там работать не будут по определению.

  3. Служба шины не запущена

    Без dbus-broker или dbus-daemon часть операций systemd недоступна. На обычных системах это авария.

Диагностика

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

Кто первый процесс: systemd или что-то другое.

ps -p 1 -o comm=

Состояние службы шины.

systemctl status dbus --no-pager | head -6

Каталог времени работы: нужен для команд менеджера пользователя.

echo "$XDG_RUNTIME_DIR"

Решение

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

1. Команда для менеджера пользователя выполняется без сеанса
Почему происходит
Ключ пользователя требует работающего менеджера пользователя и переменной с адресом шины. В сеансе через ssh или в скрипте их может не быть.
Как проверить
Посмотрите переменные и наличие менеджера.
echo "$XDG_RUNTIME_DIR $DBUS_SESSION_BUS_ADDRESS"
systemctl --user status 2>&1 | head -3
Как исправить
Задайте переменную с каталогом времени работы для нужного пользователя либо выполняйте команду через вход в сеанс. Для постоянной работы служб пользователя разрешите задержку сеанса.
sudo loginctl enable-linger пользователь
2. Контейнер без systemd
Почему происходит
В контейнерах с одним процессом менеджера нет. Команды systemctl там работать не будут по определению.
Как проверить
Проверьте, есть ли менеджер как первый процесс.
ps -p 1 -o comm=
systemd-detect-virt --container 2>/dev/null
Как исправить
Управляйте процессом средствами среды исполнения контейнеров. Запускать systemd в контейнере имеет смысл только при явной необходимости.
3. Служба шины не запущена
Почему происходит
Без dbus-broker или dbus-daemon часть операций systemd недоступна. На обычных системах это авария.
Как проверить
Посмотрите состояние службы шины.
systemctl status dbus.service --no-pager | head -6
Как исправить
Запустите службу шины и разберитесь, почему она не работала: без неё многое в системе не функционирует.

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

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

$ systemctl --user status
Failed to connect to bus: No medium found

$ echo $XDG_RUNTIME_DIR
(пусто)

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

Источники

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