Запуск демона в контексте нужной сессии
От: MuPoB  
Дата: 20.02.15 12:09
Оценка:
В состав программы входят 2 демона, один("демон") должен запускаться в контексте рутовой сессии, а другой("агент") в сессии каждого залогиненого пользователя.
Если создать для них файлы *.plist и поместить их в /Library/LaunchDaemons и /Library/LaunchAgents соответственно, то после рестарта OS X запустит демон в рутовой сессии, и будет запускать агента в каждой пользовательской сессии.

Но очень не хотелось бы требовать перезагрузку ОС после установки программы.
Пробовал запускать демона с помощью sudo launchctl load *.plist, он хоть и запускался от рута, но в контексте текущей пользовательской сессии, а не в рутовой. И при логофе этот процесс погибал.
Также пробовал запустить агента с помощью launchctl bsexec <pid> chroot -u <user> / launchctl load *.plist, где <pid> — один из процессов пользователя <user>. Но получал аналогичную ситуацию — агент запускался от имени пользователя <user>, но в контексте текущей сессии.


Можно ли запустить демона и агентов вручную (с помощью скрипта или API-функций) в контексте нужной сессии без перезагрузки? Интересуют OS X версии 10.9+
os x daemon
Re: Запуск демона в контексте нужной сессии
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 01.04.15 08:11
Оценка:
Здравствуйте, MuPoB, Вы писали:

MPB>Можно ли запустить демона и агентов вручную (с помощью скрипта или API-функций) в контексте нужной сессии без перезагрузки? Интересуют OS X версии 10.9+


Можно и нужно. Тебе стоит смотреть в сторону WatchPaths ключа для plist демона и агента. Если кратко, то система мониторит директорию и тебе достаточно сделать touch ей что бы демон поднялся с заданными привилегиями.
Re[2]: Запуск демона в контексте нужной сессии
От: MuPoB  
Дата: 08.04.15 08:55
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Можно и нужно. Тебе стоит смотреть в сторону WatchPaths ключа для plist демона и агента.


Спасибо, как-то я пропустил этот момент в документации. С этим ключом практически всё получилось.
Но с запуском агентов проблема осталась.
Допустим, у нас 2 пользовательских сессии, первая активна, вторая залочена.
Можно ли после установки запустить агента из первой сессии во обоих сессиях?
Если сделать launchctl load agent.plist, то агент запустится только в первой сессии. А во второй не получается, агент запустится только после LogOff/LogOn. touch directory тоже не помогает
Re[3]: Запуск демона в контексте нужной сессии
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 08.04.15 14:30
Оценка:
Здравствуйте, MuPoB, Вы писали:

MPB>Допустим, у нас 2 пользовательских сессии, первая активна, вторая залочена.

MPB>Можно ли после установки запустить агента из первой сессии во обоих сессиях?

Точно могу сказать одно – можно. К сожалению, я сам не делал, так что как именно решается проблема не скажу. Основное предположение – еще какой-то ключик в конфигурационном файле.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.