Назад | Перейти на главную страницу

Тайм-аут команд systemctl при запуске от имени root

С сегодняшнего дня, когда я пытаюсь выполнить systemctl используя учетную запись root, они терпят неудачу с Connection timed out ошибка:

>sudo systemctl
>Failed to list units: Connection timed out

То же самое происходит с systemctl start или systemctl stop при запуске как root.

Если я попытаюсь запустить те же команды, используя учетную запись пользователя, я не получу Connection timed out ошибка (запуск и останов дают ожидаемую ошибку из-за отсутствия разрешений в учетной записи пользователя).

Если я перезагружаю сервер, все службы, о которых я знаю, запускаются правильно, но я все равно получаю те же ошибки тайм-аута.

PD: Использование openSuse 13.2 (версия Linux 3.16.7-21 по умолчанию)

Наконец я нашел проблему.

Я решил, что процесс 1 (systemd) был запущен с --switched-root и --десериализовать. И как я нашел в эта ссылка кажется, что есть некоторые внутренние параметры, которые пытаются перезагрузить какое-то ранее сохраненное состояние.

Я выполнил kill -9 для процесса 1, теперь systemd появляется без переключения-root, а systemctl снова работает с перезагрузкой или без нее.

Два альтернативных решения проблемы:

1- перезагрузка с

systemctl --force --force reboot

или

2- без перезагрузки, просто перемещение файлов сеанса

mv /run/systemd/system/session-*.scope /tmp/

Еще одна причина, по которой вы можете это увидеть, - это когда systemd работает в виртуализированных средах. Если разные экземпляры systemd получить тот же идентификатор машины из файловой системы (/etc/machine-id) или из других резервных методов, система станет нестабильной, и вы увидите эту ошибку при использовании systemctl или другие утилиты systemd.

Я могу проверить, что это происходит с контейнерами докеров, которые используют systemd процессы в качестве точки входа. Добавление этого, чтобы помочь другим устранить эту неясную ошибку.