2010-02-03 4 views
2

Некоторое время назад я заметил, что мой экземпляр Apache2, установленный MacPorts, не запускался при запуске (MacPorts Apache2 Stopped Launching on Boot). Загружается LaunchDaemon. Сегодня я столкнулся с чем-то в файле журнала, который может указывать на ответ, но я не могу найти подтверждения.LaunchDaemons и переменные среды

Я использую переменные среды в своем файле httpd.conf. В частности, переменная ${HOME}. Возможно ли (или возможно, и т. Д.), Чтобы переменные среды были полностью загружены при выполнении LaunchDaemons? Я могу добавить их в файл plist, но я надеюсь, что кто-то сможет предоставить мне достойный высокий уровень в процессе загрузки OS X и подтвердить, что я думаю, что вижу.

Спасибо.

ответ

0

Я нашел this page about the Boot Process на MacOSX, которая содержит некоторую информацию. В основном, launchd запускается и запускается как root. Затем каждый демона начинается с launchd на основе файла plist.

Что касается среды во время запуска демона, я не нашел ни одного бита явной информации. Но после прочтения файла launchctl я нашел команду, которая может распечатать среду launchd. Так что хитрость заключается в том, чтобы идти root и спросить:

#$> sudo su 
Password: 
#$> whoami 
root 
#$> launchctl 
launchd% export 
PATH="/usr/bin:/bin:/usr/sbin:/sbin"; export PATH; 
launchd% exit 
#$> exit 

я делаю вывод, что среда печати является один используется при запуске демона. Если вы повторите операцию, не перейдя root, среда должна соответствовать пользовательской.

+0

Отличная информация, спасибо. Я нашел подобную информацию вчера, и короткая версия, похоже, что каталог $ {HOME} не имеет реального смысла при запуске. По крайней мере, это не то значение, которое мне нужно/нужно иметь. –

+0

Да, я думаю, вам придется помещать вашу среду в plist. –

+0

Итак, я добавил значение в свой файл 'environment.plist', но чтобы предотвратить конфликты, я решил попробовать настроить пользовательскую переменную с именем' HTTPD_CONF_BASE_PATH'. Это казалось хорошей идеей, но Apache, похоже, не нравится моей пользовательской ценности. Ошибки говорят о том, что '/$ {HTTPD_CONF_BASE_PATH}/includes' не существует. –