Manjaro KDE Edition
   1507

Как избавиться от 90 секундного (1:30s) ожидания после завершения работы в KDE

Был найден способ (ужасный костыль на самом деле, но безопасный, только разработчики могут исправить эту проблему, пишите на форумы, создавайте багрепорты) чтобы система не ждала 90 секунд чтобы завершить работу или сократить это время ожидания. Способ проверен на manjaro kde minimal 16.

Как обнаружить зависшее приложение или юнит вы можете узнать из этой статьи: https://manjaro.ru/blog/how-to/kak-uznat-kakaja-programma-ili-junit-meshaet-zaversheniju-raboty.html.
Опытным путем были обнаружены причины ожидания системы, к сожалению, это приложения KDE стека.

Хочу поблагодарить Eudakimau за тесты и потерянное время.

Приступим к решению:

1) Нужно создать сервис killkde:
sudo nano /etc/systemd/system/killkde.service

[Unit]
Description=Killkdesv

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/killkde.sh

[Install]
WantedBy=multi-user.target


2) Добавим сервис в автозагрузку и выполним его:
sudo systemctl enable killkde

sudo systemctl start killkde


3) Создадим файл /usr/local/bin/killkde.sh:
sudo nano /usr/local/bin/killkde.sh

#!/bin/bash
su -c "killall -9 ksmserver"
su -c "killall -9 kdeinit5"
su -c "killall -9 kactivitymanagerd"
su -c "killall -9 kded5"
su -c "killall -9 klauncher"
su -c "killall -9 kwin_x11"
su -c "killall -9 kaccess"
su -c "killall -9 drkonqi"
su -c "killall -9 sddm"
su -c "killall -9 sddm-greeter"


4) Сделаем файл /usr/local/bin/killkde.sh исполняемым:
sudo chmod +x /usr/local/bin/killkde.sh


Также одна из причин зависаний — sddm. Вам необходимо установить и использовать другой DM(Display Manager), если вы не хотите использовать другой, то будьте готовы ожидать 90 секунд. Я вас предупредил.
Для установки Lightdm выполните:
sudo pacman -S lightdm lightdm-gtk-greeter

Назначьте его в качестве основного:
sudo systemctl enable -f lightdm


Выполните пару перезагрузок, проверьте работает ли у вас данный метод, не стесняйтесь оставлять комментарии. Если у вас есть другое решение, смело пишите его.
Повторюсь, если вам не помог данный способ, то прошу написать какая программа мешает завершению сеанса, узнать вы можете это с помощью данной статьи: https://manjaro.ru/blog/how-to/kak-uznat-kakaja-programma-ili-junit-meshaet-zaversheniju-raboty.html.

11 комментариев

avatar
Можно не устанавливать Lightdm и так быстро перезагружается!
Вот, если можно было-бы, еще также сделать на выключение цены бы не было!
Последний раз редактировалось
?
Всё возможно, пока не сделан выбор !
0
avatar
Данный способ работает как на перезагрузку, так и на выключение.
0
avatar
У меня только на перезагрузку!
На выключение тоже самое!
?
Всё возможно, пока не сделан выбор !
0
avatar
Возможная причина этому — sddm. Попробуйте выявить причину с помощью данной статьи:https://manjaro.ru/blog/how-to/kak-uznat-kakaja-programma-ili-junit-meshaet-zaversheniju-raboty.html
0
avatar
По данной инструкции ни чего не мешает!
?
Всё возможно, пока не сделан выбор !
0
avatar
Вероятно причина в другом. По данной инструкции можно точно опеределить, какой процесс и systemd юнит заставляет систему ждать.
0
avatar
#!/bin/bash
su -c «killall -9 ksmserver»
su -c «killall -9 kdeinit5»
su -c «killall -9 kactivitymanagerd»
su -c «killall -9 kded5»
su -c «killall -9 klauncher»
su -c «killall -9 kwin_x11»
su -c «killall -9 kaccess»
su -c «killall -9 drkonqi»
su -c «killall -9 sddm»
su -c «killall -9 sddm-greeter»

Столько ж их будет в итоге?
А не лучше создать файлик /usr/local/bin/killkdelist с простым списком зависающих процессов, а сам скрипт упростить? Как то так:

#!/bin/bash
su -c «killall -9 $(cat killkdelist)»

И сам список ведь можно автоматом (ну, полуавтоматом) генерить, нет?
Последний раз редактировалось
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
Увы получится тоже самое, только из двух файлов. На данный момент данный список процессов работает на manjaro KDE minimal, если у кого то продолжает зависать, прошу выявить название процесса и я дополню список.
Последний раз редактировалось
0
avatar
Конечно то же самое, все твое, я не претендую.
Но можно ж из /debugsvinfo и /debugpsinfo в killkdelist седом имена вытаскивать. Хотя можно и прямо в скрипте это реализовать, на переменных. Будет 1 файл, но будет изящнее. И работать будет везде, не только в KDE minimal.
Последний раз редактировалось
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
В настройках Systemd с дуру в первой вкладке все юниты проверил на тайм ауты и исправил все 90 сек на 10, перезагрузка (начиная со второго раза) просто моментальная! Тоже самое касается выключения! Но потом увидел вкладку «Конфигурация» и там настройка DefaultTimeoutStart/Stop указана 90 сек! исправил на 10, можно было и так сначала сделать… и никаких танцев с бубном =)
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
0
avatar
Совет очень вредный, крайне не рекомендую этого делать.
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.