【问题标题】:LaunchDaemons and Environment VariablesLaunchDaemons 和环境变量
【发布时间】:2011-01-12 19:27:08
【问题描述】:

一段时间以来,我一直注意到我安装 MacPorts 的 Apache2 实例在我启动时没有启动 (MacPorts Apache2 Stopped Launching on Boot)。 LaunchDaemon 已加载。今天我在一个日志文件中遇到了一些可能指向答案的东西,但我找不到任何确认。

我在httpd.conf 文件中使用环境变量。具体来说,${HOME} 变量。执行 LaunchDaemons 时是否有可能(或可能等)环境变量已完全加载?我可以将它们添加到 plist 文件中,但我希望有人可以为我提供一个体面的、高级的 OS X 启动过程并确认我认为我看到的内容。

谢谢。

【问题讨论】:

    标签: macos osx-snow-leopard environment-variables startup


    【解决方案1】:

    我在 MacOSX 上找到了this page about the Boot Process,其中包含一些信息。基本上,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重复操作,环境必须和用户的环境匹配。

    【讨论】:

    • 很好的信息,谢谢。我昨天发现了类似的信息,简短的版本似乎是 ${HOME} 目录在启动时没有真正的意义。至少不是我需要/希望它具有的含义。
    • 是的,我想您必须将您的环境放入 plist。
    • 所以我在environment.plist 文件中添加了一个值,但为了防止冲突,我决定尝试设置一个名为HTTPD_CONF_BASE_PATH 的自定义变量。这似乎是个好主意,但 Apache 似乎不喜欢我的自定义值。错误提示 <path/to/my/httpd.conf>/${HTTPD_CONF_BASE_PATH}/includes 不存在。
    猜你喜欢
    • 2015-09-16
    • 2019-08-21
    • 2014-07-03
    • 2012-02-13
    • 2016-04-30
    • 2014-04-22
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多