Николай Ка wrote:
Надо добавлять sleep 5 && kill -user $USER
KILL, а лучше вместо $USER поставить $(whoami) на всякий случай. Но это я уже фантазирую. Вот скрипт завершения от арчеводов (он на комбинацию из трёх пальцев рассчитан, так что сначала переспрашиваетстраховка от случайного нажатия)
Да, пауза позволяет зачистить процессы пользователя, но вариант с $(whoami) только рушит систему
# sleep 5 && kill -user $USER -KILL (работает)
# sleep 5 && kill -user $(whoami) -KILL (рушит)
# sleep 5 && killall --user $USER -TERM (работает)
# sleep 5 && killall --user $(whoami) -TERM (рушит)
Получился не совсем верно работающий костыль.
Пробовал и skill -TERM -t tty7. Срабатывает без внесения пауз и убирает процессы, запущенные под другим пользователем, но остается один работающий процесс (gnome-keyring-daemon) от завершенной сессии.
P.S.
Остается еще 2 вопроса (в контексте проблем при использовании компиза):
# Как завершить процессы, запущенные от других пользователей в данной сессии при разлогинивании
# Что делать, если у пользователя несколько сессий и нужно завершить только одну сессию
P.P.S.
Исходя из наблюдений, для выбора процессов подлежащих к завершению сессией можно попробовать следующий алгоритм:
Выясняем PID закрываемой lxsession, а также ее PPID, по этим двум числам ищем совпадения в PGRP, далее формируем два списка. В один вносим все найденные нами PID процессов, в другой оставшиеся процессы. Затем ищем совпадения из оставшихся на равенство их PPID с PID уже отобранных процессов, перекидывая из оставшихся в отобранные при совпадениях. Повторяем цикл до тех пор пока не останется совпадений в списке оставшихся процессов и тогда закрываем отобранные процессы.
Вобщем попробую накидать скрипт и проверить в разных условиях, но должно работать.