Учебники (How-To & F.A.Q)
   4335

Как узнать какая программа или юнит мешает завершению работы

В этой статье я опишу информацию, с помощью которой можно узнать какой юнит systemd, а также процессы, не дают завершиться системе и вынуждают ждать 1:30s.

Прежде всего выражаю огромную благодарность 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 комментариев

avatar
Мне вот не понравился Файлик /usr/lib/systemd/system/systemd-journal-flush.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Flush Journal to Persistent Storage
Documentation=man:systemd-journald.service(8) man:journald.conf(5)
DefaultDependencies=no
Requires=systemd-journald.service
After=systemd-journald.service
After=systemd-remount-fs.service
Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
RequiresMountsFor=/var/log/journal

[Service]
ExecStart=/usr/bin/journalctl --flush
Type=oneshot
RemainAfterExit=yes
TimeoutSec=90s

А именно тайм аут в 90 секунд. Это можно изменять?
Последний раз редактировалось
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
0
avatar
Мне вот не понравился Файлик /usr/lib/systemd/system/systemd-journal-flush.service
Насколько я знаю этот сервис отвечает за очистку системного журнала от устаревших записей. Отрабатывает он на старте, и на выключение никак не влияет.
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
В настройках Systemd с дуру в первой вкладке все юниты проверил на тайм ауты и исправил все 90 сек на 10, перезагрузка (начиная со второго раза) просто моментальная! Тоже самое касается выключения! Но потом увидел вкладку «Конфигурация» и там настройка DefaultTimeoutStart/Stop указана 90 сек! исправил на 10, можно было и так сначала сделать… и никаких танцев с бубном =)
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
0
avatar
В настройках Systemd с дуру в первой вкладке
Это где? В какой оболочке, программе/утилите? Чем пользовались?
можно было и так сначала сделать… и никаких танцев с бубном
Это все-же костыль, и костыль довольно известный. Но иногда чреватый неприятностями manjaro.ru/blog/kernel-hardware/zaderzhka-90sek-pri-vykljuchenii.html
Последний раз редактировалось
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
Более того, у меня он сработал тоько на офисной машине, на домашней не сработал
0
avatar
Это где? В какой оболочке, программе/утилите? Чем пользовались?
Изначально говорилось о KDE
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
0
avatar
Изначально говорилось о KDE
Понятно, спасибо.
Но где говорилось про KDE? Способ описанный в топике, от DE никак не зависит.
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
DefaultTimeoutStart костыль, нежели диагностика и выявление истинной проблемы. В некоторых случаях, например на слабопроизводительных устройствах, принудительное завершение работы после «10» секунд может повлечь за собой потерю важных данных, так как программа не успеет сохранить их. Статья не такая уж и сложная для понимания и выполнения, за несколько минут можно выявить процессы программ и сервисы, которые действительно мешают системе, нежели прибивать всех после «10» секунд.
Найденные процессы можно прибить способом https://manjaro.ru/blog/manjaro-kde-edition/kak-izbavitsja-ot-90-sekundnogo-1_30s-ozhidanija-posle-zavershenija-raboty-v-kde.html который безопасен, в отличие от предложенных.
Последний раз редактировалось
0
avatar
Можно яя опять подниму старую тему, на котрую никак не могу найти ответа.

Не заваершает работу. Просто перезагружается ноут и все. Помогает только sudo halt и кнопка выключения
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.