Демон и контроль процессов в сессиях
От: Hank Россия  
Дата: 06.01.22 01:43
Оценка:
Добрый день, коллеги.

Пара вопросов, связанных с управлением процессами в терминальных сессиях.
Имеет смысл сразу сделать оговорку — разработкой системных приложений под линкус занят относительно недавно и нет хорошего уровня понимания работы системы. Только общие принципы, разработка прикладного софта. Поэтому иногда буду сбиваться в терминологию Windows и примеры оттуда же.

Имеется некая служба (демон systemd), которая слушает сокет и принимает определенные команды по сети. Задача — в каждой терминальной сессии (как это правильно называется в Линкус, так до конца и не понял) запускать некий "агент", от имени пользователя этой сессии. Данный Агент отображает GUI и коммуницирует через IPC с демоном. Отсюда возникает несколько вопросов:

1. Как отслеживать logon/logoff, блокировку сессии и т.д. из демона?
В Windows для этого есть понятный код SERVICE_CONTROL_SESSIONCHANGE в главном обработчике службы.
В macOS тоже есть понятный алгоритм действий https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

Как это реализовать в linux?

2. Каким образом запустить процесс в нужной/указанной терминальной сессии? Допустим, нам необходимо после логона пользователя запустить из Демона в его сессии "агент".
В Windows это делается через связку WTSQueryUserToken — CreateProcessAsUser

Какой подход нужно использовать в linux?

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

Также важная оговорка, — речь идет исключительно про GUI варианты оболочек.

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.