С сегодняшнего дня, когда я пытаюсь выполнить 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
процессы в качестве точки входа. Добавление этого, чтобы помочь другим устранить эту неясную ошибку.