2015-07-10 3 views
3

Есть ли способ, которым мы можем контролировать сам запуск программы, т.е. если задание загружается или выгружается из списка daemon/agent от запуска? Например, может ли любое административное приложение регистрироваться для получения события всякий раз, когда новый plist загружается или выгружается демоном launchD, например, пуская эту команду: launchctl load/unload /Library/LaunchDaemons(or launchAgents)/test.plist?OSX: Мониторинг launchd, демоны и агенты

Опрос - это один из вариантов, но есть ли эффективный ресурс?

Любая помощь будет заметна.

ответ

0

Я не уверен, что это именно то, что вы ищете, но есть очень мощный инструмент для OSX, называемый dtrace. Вы можете использовать его для просмотра всех видов событий в системе и их фильтрации, как вы хотите, например, системных вызовов.

С вашей конкретной ситуации я бы даже взглянуть на dtruss что гораздо проще в использовании инструмент, который использует DTrace, чтобы дать вам информацию: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dtruss.1m.html Она должна быть достаточно простой, чтобы получить «подсказку» от dtruss каждый раз, launchctl звонок сделан, я не уверен, какую информацию вы хотите получить от звонка.

dtrace имеет целые книги, написанные о том, как использовать его и писать подписи для него. Если вы не можете получить все необходимое от dtruss, вы можете изучить его еще немного.

Также не эти инструменты командной строки, если вы ищете что-то программируемое, у вас будет немного больше работы перед вами.

+0

вещь, которую я ищу, - это захват события, когда пользователь-админ пытается выгрузить моего демона, произнеся команду, вызывая эту команду из командной строки: sudo unload xyz.plist .. есть способ захватить это событие из dtruss ? – Abhinav

+0

Я бы хотел сказать «да». Если вы используете его, чтобы увидеть все системные вызовы, сделанные 'launchctl', а затем вызывать выгрузку самостоятельно, вы можете увидеть, какой системный вызов вы можете фильтровать. Большим преимуществом 'dtrace' в этом случае может быть то, что легче видеть, когда ваш файл plist открывается любым процессом. – Shrewd

Смежные вопросы