Erlang 使用Mac OS X Yosemite下的launchd启动YAWS

Erlang 使用Mac OS X Yosemite下的launchd启动YAWS,erlang,homebrew,launchd,yaws,Erlang,Homebrew,Launchd,Yaws,我正在尝试使用以下PLIST将Yaws(通过自制软件安装)设置为在OS X Yosemite下自动启动: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> &l

我正在尝试使用以下PLIST将Yaws(通过自制软件安装)设置为在OS X Yosemite下自动启动:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>ca.seidlitz.yaws</string>
        <key>ProgramArguments</key>
        <array>
                <string>sh</string>
                <string>-c</string>
                <string>/usr/local/Cellar/yaws/1.98/bin/yaws --daemon --conf /usr/local/Cellar/yaws/1.98/etc/yaws/yaws.conf</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/usr/local/opt/yaws</string>
        <key>StandardOutPath</key>
        <string>/tmp/yaws.log</string>
        <key>StandardErrorPath</key>
        <string>/tmp/yaws_err.log</string>
</dict>
</plist>

标签
约塞德利兹·雅斯
程序参数
嘘
-c
/usr/local/cillar/yaws/1.98/bin/yaws--daemon--conf/usr/local/cillar/yaws/1.98/etc/yaws/yaws.conf
运行负荷
工作目录
/usr/local/opt/yaws
标准门诊
/tmp/yaws.log
标准错误路径
/tmp/yaws_err.log
我尝试使用sudo launchctl load/Library/LaunchDaemons/ca.seidlitz.yaws.plist加载此plist
但是没有运气。我在/var/system.log中没有收到任何错误,而/tmp/yaws.log包含以下错误:“1>***终止erlang(nonode@nohost)"

我还尝试将其作为守护进程并以交互模式运行。守护进程不会在日志文件中生成任何错误,但Yaws未运行


任何人都能发现plist的任何问题吗?

您应该使
/usr/local/cillar/yaws/1.98/bin/yaws
脚本可执行(如果尚未执行),去掉
sh-c
调用,并正确地将
yaws
脚本及其参数声明为单独的字符串,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>ca.seidlitz.yaws</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/Cellar/yaws/1.98/bin/yaws</string>
                <string>--daemon</string>
                <string>--conf</string>
                <string>/usr/local/Cellar/yaws/1.98/etc/yaws/yaws.conf</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/tmp</string>
        <key>StandardOutPath</key>
        <string>/tmp/yaws.log</string>
        <key>StandardErrorPath</key>
        <string>/tmp/yaws_err.log</string>
</dict>
</plist>

标签
约塞德利兹·雅斯
程序参数
/usr/local/Cell/yaws/1.98/bin/yaws
--守护进程
--形态
/usr/local/ceral/yaws/1.98/etc/yaws/yaws.conf
运行负荷
工作目录
/tmp
标准门诊
/tmp/yaws.log
标准错误路径
/tmp/yaws_err.log

为了扩大问题的范围:有人可以分享任何基于Erlang的应用程序的LaunchDaemon plist示例吗?谢谢,Steve。我验证了yaws脚本是可执行的,并根据您的示例修改了plist,但是yaws仍然没有运行。没有任何内容写入/tmp目录中的日志文件。我将尝试dtrace检查是否存在任何权限问题。从您的问题中不清楚在交互模式下运行它是否有效。如果它在交互模式下不工作,我建议先让它工作。是的,yaws在交互模式下运行良好,并且从shell中妖魔化。唯一的问题是从LaunchDaemon plist运行它。现在我有了一个合适的plist,我正在尝试解决文件权限等问题。在这一点上,它看起来像一些本地问题。再次感谢你的帮助。谢谢,史蒂夫。我接受了你的建议。Yaws可以工作,但现在无论是从我的帐户还是由root用户运行,Yaws--status或
--stats
显示
没有Yaws系统响应
yaws--ls
还显示系统已停止。控制文件由
/tmp/.yaws/yaws/default/CTL
下的
root
创建。从launchd开始,与daemonized系统交互的正确方式是什么?(为了清楚起见,我是否应该将此作为单独的问题重新发布?)默认情况下,状态检查希望在用户的主目录下找到控制信息。您可以尝试先设置OS环境变量
YAWSHOME=/tmp
,然后运行
yaws--status
命令。