LINUX.ORG.RU

При выходе из сессии Lxde могут оставаться процессы вышедшего пользователя

 , , , сессия lxde


1

1

Процессы emerald и conky после выхода пользователя из сессии остаются в системе.

Emerald пашет декоратором в compiz, который подменил родной для Lxde Openbox.

Conky запускается при старте, если выбран в lxsession-edit, но не выгружается по lxsession-logout.

Причем процесс emerald-а вышедшего пользователя начинает использоваться другими пользователями(!??), сам compiz этим не грешит. Для меня загадка зачем emerald привязывается к конкретным пользователям. Дистрибутив gentoo.

Не могу понять в чем загвоздка.

Есть мысли как поправить не нарушая логики сессий Lxde?

★★

Последнее исправление: glibych (всего исправлений: 1)

systemd-logind умеет прибивать программы после выхода из сессии. Нужно включить модуль pam_systemd.so с параметром kill-session-processes=1.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

У мну openrc

Можно прибивать все процессы пользователя проще:

pkill -u UID

Но как минимум возникает вопрос где ее лучше разместить..

glibych ★★
() автор топика
Ответ на: комментарий от glibych

Можно прибивать все процессы пользователя проще:

Это неправильно, пользователь может открыть несколько сессий, а эта команда убьёт сразу все сессии. systemd прибивает процессы сессии правильно, не трогая другие, потому что каждая сессия — это группа процессов в cgroups.

Тут нужно либо использовать systemd, либо написать модуль для PAM, который будет работать аналогично pam_systemd.so, следя за процессами в сессиях и закрывая их правильно.

А вообще, разве LXDE-шный костыль не должен прибивать оконный менеджер, а тот, в свою очередь, — emerald? И странно, что conky не завершается, если его запускает этот костыль. С xfce4-session таких проблем, кажется, не было — может, имеет смысл попробовать его?

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Это неправильно, пользователь может открыть несколько сессий, а эта команда убьёт сразу все сессии. systemd прибивает процессы сессии правильно, не трогая другие, потому что каждая сессия — это группа процессов в cgroups.

Спасибо, чуть не упустил этот момент.

Это неправильно, пользователь может открыть несколько сессий, а эта команда убьёт сразу все сессии. systemd прибивает процессы сессии правильно, не трогая другие, потому что каждая сессия — это группа процессов в cgroups.

Тут нужно либо использовать systemd, либо написать модуль для PAM, который будет работать аналогично pam_systemd.so, следя за процессами в сессиях и закрывая их правильно.

Других способов выделить процессы конкретной сессии из cgroups нет?

А вообще, разве LXDE-шный костыль не должен прибивать оконный менеджер, а тот, в свою очередь, — emerald? И странно, что conky не завершается, если его запускает этот костыль. С xfce4-session таких проблем, кажется, не было — может, имеет смысл попробовать его?

Должен, но почему-то не работает( Пытаюсь разобраться. А если уж переходить на другой session, лучше взять второгномовский или мышиный?

glibych ★★
() автор топика
Ответ на: комментарий от glibych

Других способов выделить процессы конкретной сессии из cgroups нет?

Их надо не просто выделять из cgroups, их туда должен кто-то складывать. Выделить можно даже простым скриптом на баше, но для этого там что-то должно быть. pam_systemd.so вместе с systemd-logind как раз и занимаются созданием групп для каждой сессии, без них нужно что-то другое, что будет создавать группы. ЕМНИП, если где-то в xinitrc создать группу, то все процессы, запущенные там, и их потомки будут в этой группе. По-моему, создать группу тоже можно скриптом на баше (после того как сделали тот самый 200-строчный патч на ядро, появился и скрипт для 2.6.37, который делал то же самое). В принципе, если запилить нужный набор скриптов, можно реализовать аналогичную вещь. Но не совсем понятно, кто будет запускать скрипт при выходе из сессии.

А если уж переходить на другой session, лучше взять второгномовский или мышиный?

У gnome-session, ЕМНИП, есть избыточная функциональность, не относящаяся к поддержанию сессии, вроде неотключаемого запуска всяких гномских программ типа gnome-settings-daemon. В Xfce почему-то иногда (редко) бывает баг, связанный с незапустившимся оконным менеджером.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Спасибо, немного привел в порядок мысли по этому поводу. Попробую выделить подгруппы на основе запущенных lxsession, а если не получится присмотрюсь к второгномовскому.

glibych ★★
() автор топика
Ответ на: комментарий от gentoo_root

Но не совсем понятно, кто будет запускать скрипт при выходе из сессии

С этим по идее должно быть просто:

$ ls /etc/lxdm
LoginReady  PostLogin   PreLogin   PreShutdown
lxdm.conf   PostLogout  PreReboot  Xsession

При выходе всего то нужно вставить скрипт в /etc/lxdm/PostLogout

Но не работает... Для пробы вставлял killall --user $USER -TERM. Реакция нулевая, а ведь должна быть.

P.S. Версии lxdm-0.4.1-r4 и lxsession-0.4.6.1.

glibych ★★
() автор топика
14 июля 2012 г.
Ответ на: комментарий от geekless

Извини, что переспрашиваю - инфы мало в доках. А что должна делать эта уставка?

Если перезапуск иксов, то тогда вылетят все пользователи, использующие его.

glibych ★★
() автор топика
Ответ на: комментарий от geekless

Разные. Есть несколько случаев.

1. Ты единственный пользователь иксов

2. Ты зашел локально и потом зашел удаленно

3. В системе несколько пользователей

4. Несколько пользователей и у некоторых не по одной сессии.

Одно из решений я опубликовал тут, но руки не дошли сваять рабочий скрипт.

glibych ★★
() автор топика
Ответ на: комментарий от glibych

3. В системе несколько пользователей

У каждого пользователя будет своя копия иксов.

4. Несколько пользователей и у некоторых не по одной сессии.

Аналогично.

dm для того и нужен, чтобы каждому сеансу давать по отдельном иксам.

geekless ★★
()
Ответ на: комментарий от geekless

Понял - буду пробовать. Спасибо.

glibych ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.