运行调用节点进程的bash脚本的已启动plist正在退出,状态码为8

时间:2014-02-06 18:41:11

标签: macos node.js bash launchd

这是我的launchd播放列表

   <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
          <string>com.blockjunk.server.plist</string>
        <key>ProgramArguments</key>
        <array>
          <string>/Users/jeff/scripts/nojunkweb/startserver.sh</string>
        </array>
        <key>RunAtLoad</key>
          <true/>
        <key>KeepAlive</key>
          <true/>
    </dict>
    </plist>

这是调用

的startserver.sh
#!/bin/bash

echo "Attempting to start node server"
/usr/local/bin/node /Users/jeff/scripts/nojunkweb/server.js "http://dynamic.xkcd.com/random/comic/" "https://www.shortcutfoo.com/app/drills" "https://www.duolingo.com" "http://stackoverflow.com"

launchctl list显示com.blockjunk.server.plist的错误代码8 - 是否有人知道状态代码8的含义或我可能做错了什么?

这是startserver.sh的权限 -rwxr-xr-x 1 jeff staff 248B Feb 6 10:16 startserver.sh

plist位于〜/ Library / LaunchAgents /

2 个答案:

答案 0 :(得分:1)

错误代码8:执行格式错误。有人要求执行一个文件,虽然它具有适当的权限,但不是可执行文件所需的格式。

从Terminal.app手动启动作业。究竟是什么错误信息?

1)由于奇怪的原因,作业无法执行(3):8 :launchd无法执行ProgramArguments中指定的作业。鉴于你指定了一个合适的爆炸线,这是不可能的。

2)退出代码:8 :调用的脚本launchd返回此错误。尝试手动运行脚本。它有效吗?

了解错误消息的完全非常重要。否则,无法确定错误代码8是什么,因为我们不知道哪个进程报告了它。 launchd报告标准错误代码,但一般不需要软件。

要找出标准错误代码的含义,请输入以下命令:

perl -E 'say $!=shift' 8

只需将8替换为您要查找的代码。

答案 1 :(得分:0)

我需要将plist放入/Library/LaunchDeamonsroot运行,因为node进程需要root access