[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Завершение shell скрипта при окончании сессии пользователя (logout)



Руслан Коротаев -> debian-russian@lists.debian.org  @ Fri, 9 Oct 2015 20:02:25 +0500:

 >> Решение в виде session-cleanup-script - это костыль. Оно не
 >> универсально и зависит от конкретного DM. Я ищу правильное решение,
 >> чтобы приложение могло узнать, что сессия завершается и совершить
 >> нужные действия.

 РК> Как вариант, можно попробовать ~/.bash_logout, если используете bash.
 РК> Предполагается что вы выключаете или перезагружаете комп, заодно
 РК> подчищаете логи, делаете бекап и так далее. Однако приложение не узнает
 РК> что сессия завершается, просто выполнит скрипт, но зато не зависимо от
 РК> конкретного DE/WM. 

Насколько я понимаю, .bash_logout не запускается, если то была не
интерактивная терминальная сессия.  Иксовая сессия не является
интерактивной терминальной.

 >> Похоже DE в частности XFCE4 не следит за всеми процессами, которые были
 >> запущены самой DE. Хотя с другой стороны возможно это и правильно - я
 >> ведь могу запустить несколько процессов, которые вполне могут жить и
 >> после завершения сессии.
 >> 
 >> У меня пробел в знании как вообще работает завершение сессии в DE. Ведь
 >> при выходе из системы приложения каким-то образом узнают, что сессия
 >> завершается. Например writer просит сохранить документ при выходе, но
 >> если ему отправить сигнал TERM, то ничего подобного не происходит.
 >> 
 >> Возможно DE закрывает все окна в текущей сессии и таким образом
 >> достигается gracefull exit.

 РК> Видимо это особенность конкретного DE/WM, у меня xmonad, когда я из него
 РК> выхожу он меня вообще ни о чем не предупреждает, вываливается в консоль
 РК> и всё. Writer потом пробует восстановить документ, а вот то что было
 РК> запущенно в терминале ведет себя по разному, некоторые приложения
 РК> нормально завершают работу, некоторые демонизируются, то есть это
 РК> зависит от самого приложения, от того как там реализована обработка
 РК> сигналов. 

Это, в общем, одна из разниц между DE и WM.  DE подразумевает интеграцию
в том числе и на уровне сеанса работы в среде, информирует свои
компоненты (и вообще всех, кто понимает) о _намерении_ пользователя
завершить сеанс и пытается дождаться ответов.  

WM ведет себя попроще.  Судя по "демонизируются", шлет SIGHUP.  Я, если
честно, не проверял, как ведет себя xmonad - я обычно закрываю все
программы вручную, прежде чем выйти.  Я, впрочем, оттуда выхожу только
когда собираюсь перезагрузить машинку, раз в несколько месяцев.


Reply to: