Изящное завершение работы в ArchLinux

Я пытаюсь получить изящное завершение / перезагрузку в ArchLinux с помощью GNOME Shell. Теперь, когда я прошу об отключении, он немедленно отключается, не открывая время открытых программ, чтобы изящно закрыть / сохранить открытые файлы. В результате, когда я перезапускаю Chrome (например), он говорит мне, что сессия не была закрыта правильно и т. Д. Читая в Интернете, я узнал, что systemd при выключении процессов сначала отправляет SIGTERM за которым следует SIGKILL если процесс не приближаясь к заданному таймауту. Однако я замечаю, что в моей системе SIGKILL отправляется сразу после SIGTERM и я предполагаю, что это является причиной неграмотного завершения программ.

Я нашел документацию, которая (если я правильно ее прочитаю) утверждает, что тайм-аут перед отправкой SIGKILL может быть задан параметром TimeoutStopSec= . Также отправка SIGKILL также может быть отключена с SendSIGKILL= опции SendSIGKILL= . Но я не могу найти, где настроить эти параметры … есть ли файл конфигурации systemd shutdown / reboot, где я могу установить эти параметры?

РЕДАКТИРОВАТЬ:

Я сделал несколько тестов, и я обнаружил две интересные вещи:

  1. Если я вручную killall -SIGTERM chrome , как этот killall -SIGTERM chrome , он не будет жаловаться, что он не был закрыт правильно в следующий раз, когда я его снова запустил. Если я killall -SIGKILL chrome его вот так, вместо killall -SIGKILL chrome , он будет жаловаться. Это говорит мне, что хром обрабатывает SIGTERM правильно.
  2. Глядя на вывод моей процедуры выключения, systemd печатает Sending SIGTERM... сразу же после Sending SIGKILL...

Согласно приведенному ниже комментарию, systemd обрабатывает только свои процессы. Так что в моем случае GDM. Это говорит мне, что проблема может быть:

  1. либо GDM не закрывает дочерние процессы (например, Chrome) правильно (т.е. отправляет SIGTERM им)
  2. или systemd отправляет GDM сообщение SIGKILL, чтобы раньше не указывать время для правильного закрытия своих детей.

Есть ли способ проверить / настроить, как GDM закрывает свои дочерние элементы?

  • Как изменить сеанс по умолчанию?
  • Экран экспорта не работает на Ubuntu Gnome (gmd3)
  • Запустить скрипт после входа GDM в GNOME?
  • Как отключить список пользователей на экране входа в GDM3?
  • Запуск NetworkManager перед gdm.service с помощью systemd
  • Debian 7: Gnome3 иногда останавливается при загрузке
  • Gnome 3.14.2 не работает в Debian
  • «Домашний каталог / Не наш» при загрузке
  • 3 Solutions collect form web for “Изящное завершение работы в ArchLinux”

    Чтобы изящно завершить работу вашего рабочего стола, вам может потребоваться поднять TimeoutStopSec= для GDM или любой другой менеджер дисплея, который вы используете.

    Это работало на моем Arch Linux с Gnome 3.12. Оказалось, что это может быть связано с конфигурацией в /etc/gdm/PostSession/Default .

    1. Запустите sudo pacman -S wmctrl чтобы установить wmctrl для управления Windows.

    2. Создайте исполняемый файл для закрытия всех окон. Например, я поместил его в /home/[your_username]/bin/close-all-windows с этим содержимым:

       #!/bin/sh wmctrl -l | while read -r line do wmctrl -c `echo "$line" | sed 's/.* [0-9]* [your_hostname] //'` done 
    3. Измените /etc/gdm/PostSession/Default и добавьте это содержимое перед exit 0 :

       echo " Closing selected windows programs gracefully" export DISPLAY=:0 su [your_username] -c /home/[your_username]/bin/close-all-windows 

    Надеюсь, что это сработает.

    Сценарий wmctrl sorpass отлично работает для меня (на CentOS 7 мне просто нужно было запустить «yum install wmctrl»). Однако я обнаружил, что / etc / gdm / PostSession / Default, казалось, запускался только при выходе из системы, а не при выключении. Поэтому вместо использования / etc / gdm / PostSession / Default я теперь вызываю скрипт wmctrl sorpass из сценария питона Seamus Phelan, который можно найти на этих двух сайтах:

    Эта комбинация скриптов отлично подходит для закрытия Firefox, Chrome и т. Д. Автоматически и чисто, когда я выхожу из системы или закрываю свой настольный компьютер CentOS 7. Обратите внимание, что с CentOS 7 вы должны запустить 'yum install gnome-python2-gnome', чтобы этот скрипт python работал.

    Interesting Posts

    Как изменить цвет символа при хвосте и tr

    Wget – получение рекурсивных URL-адресов из списка URL-адресов

    Каковы режимы readline, раскладки клавиш и их привязки по умолчанию?

    Локальный пользователь для сопоставления пользователей NFS

    Изменение шрифтов для приложения Smuxi

    Как подключиться к фотоаппарату Sony через Wi-Fi от Linux

    Как сервер root (DNS) может ответить на twitter.com?

    несколько контейнеров lxc, совместно использующих один и тот же пул ресурсов процессора и памяти

    Отсутствие «недостижимого» ответа для исходящего TCP-соединения при использовании маршрутизации fwmark и политики

    Используется ли “ `только с cd?

    Использование нестандартного местоположения для служб avahi

    udev не работает при загрузке?

    Rsync над пользовательской оболочкой с fifo

    Настройка раскладки клавиатуры: трехпозиционный переключатель, 3-й макет, когда CapsLock включен

    Как вы находите, какие ключи являются символами «стереть» и «убить строку» в Ubuntu?

    Linux и Unix - лучшая ОС в мире.