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: