4326
Как узнать какая программа или юнит мешает завершению работы
В этой статье я опишу информацию, с помощью которой можно узнать какой юнит systemd, а также процессы, не дают завершиться системе и вынуждают ждать 1:30s.
Прежде всего выражаю огромную благодарность intelfx за помощь и написанное решение здесь.
Приступим:
1) Включим отладочную консоль debug-shell:
Если вы не хотите вводить данную строку перед каждой перезагрузкой, то можете включить автозапуск сервиса:
2) Удостоверимся что рутовая оболочка debug-shell работает на девятой виртуальной консоли:
Мы увидим sh-4.3#
Вернемся обратно в пользовательское окружение.
3) Выполняем перезагрузку
4) Когда возникает ожидание, переходим в отладочную консоль (Ctrl+Alt+F9) и выполняем
На экране появляется список сервисов, ожидающие в состояних «waiting» и запущенные в состоянии «running». Нас интересуют последние, т.е. «running».
5) Запишем информацию о «зависшем» юните, имя которого слева от «running», в файл.
6) После этого мы можем узнать список процессов, которые не дают завершить работу системы:
Также список процессов можно записать в файл:
Таким образом получили два файла /debugsvinfo и /debugpsinfo, с информацией по зависшему сервису и список незавершенных процессов, для последующего анализа.
Если у вас есть дополнения или интересная информация, будьте свободны поделиться ею!
Прежде всего выражаю огромную благодарность intelfx за помощь и написанное решение здесь.
Приступим:
1) Включим отладочную консоль debug-shell:
sudo systemctl start debug-shell
Если вы не хотите вводить данную строку перед каждой перезагрузкой, то можете включить автозапуск сервиса:
sudo systemctl enable debug-shell
2) Удостоверимся что рутовая оболочка debug-shell работает на девятой виртуальной консоли:
Ctrl+Alt+F9
Мы увидим sh-4.3#
Вернемся обратно в пользовательское окружение.
3) Выполняем перезагрузку
4) Когда возникает ожидание, переходим в отладочную консоль (Ctrl+Alt+F9) и выполняем
systemctl list-jobs
На экране появляется список сервисов, ожидающие в состояних «waiting» и запущенные в состоянии «running». Нас интересуют последние, т.е. «running».
5) Запишем информацию о «зависшем» юните, имя которого слева от «running», в файл.
systemctl status имя_юнита |& tee /debugsvinfo
6) После этого мы можем узнать список процессов, которые не дают завершить работу системы:
pgrep -a -u имя_пользователя
Также список процессов можно записать в файл:
pgrep -a -u имя_пользователя |& tee /debugpsinfo
Таким образом получили два файла /debugsvinfo и /debugpsinfo, с информацией по зависшему сервису и список незавершенных процессов, для последующего анализа.
Если у вас есть дополнения или интересная информация, будьте свободны поделиться ею!
9 комментариев
А именно тайм аут в 90 секунд. Это можно изменять?
KDE-Minimal Setting-Up
KDE-Minimal Setting-Up
Это все-же костыль, и костыль довольно известный. Но иногда чреватый неприятностями manjaro.ru/blog/kernel-hardware/zaderzhka-90sek-pri-vykljuchenii.html
KDE-Minimal Setting-Up
Но где говорилось про KDE? Способ описанный в топике, от DE никак не зависит.
Найденные процессы можно прибить способом https://manjaro.ru/blog/manjaro-kde-edition/kak-izbavitsja-ot-90-sekundnogo-1_30s-ozhidanija-posle-zavershenija-raboty-v-kde.html который безопасен, в отличие от предложенных.
Не заваершает работу. Просто перезагружается ноут и все. Помогает только sudo halt и кнопка выключения