OSX launchd:没有此文件或目录

OSX launchd:没有此文件或目录

我正在尝试在 OS X 上使用 launchd 设置一个简单的重复任务。我的 plist 文件位于 /Users/me/Library/LaunchAgents 中,我希望它执行的操作是运行命令node --version。我的 plist 文件如下所示:

<?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.blah.testnode</string>
    <key>ProgramArguments</key>
    <array>
        <string>node</string>
        <string>--version</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

当我运行时它打印出了正确的响应launchctl load com.blah.testnode.plist,但现在看来每次后续执行都会给我以下错误:

2014 年 8 月 24 日下午 1:54:03.845 com.apple.launchd.peruser.501[251]: (com.blah.testnode[36483]) 作业执行失败 (3)。设置事件以告知我们何时重试:2:没有此文件或目录

2014 年 8 月 24 日下午 1:54:03.845 com.apple.launchd.peruser.501[251]: (info.jayharris.testnode[36483]) 作业因奇怪原因无法执行(3): 2

有人知道如何让它工作吗?谢谢。

答案1

我在从 LaunchAgent .plist 启动节点应用程序时遇到了类似的问题。 Launchctl 需要二进制文件或脚本的完整路径才能执行该文件。 因此,解决方案是确保您为节点提供准确的目录。 例如,由于我使用 homebrew 安装了节点,因此我指定了完整路径/usr/local/bin/node

答案2

有一个可执行文件,它基本上是一个自托管服务。当我使用代码从终端运行它时,它会毫无问题地触发

/Users/user/Public/node_modules/codem-transcode/bin/codem-transcode -c /Users/user/Public/tmp/config.json

因此,我创建了一个要在启动时运行的 plist 脚本,并将其存储在 LaunchAgent 文件夹中。运行它时,我收到“没有此文件或目录”错误。

这张图片展示了我所掌握的几乎所有信息

一切

以下是代码中的 plist

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>Label</key>
        <string>com.wolftech.transcode.job</string>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/com.wolftech.transcode.job.err</string>
        <key>StandardOutPath</key>
        <string>/tmp/com.wolftech.transcode.job.out</string>
        <key>StartInterval</key>
        <integer>60</integer>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/user/Public/node_modules/codem-transcode/bin/codem-transcode -c /Users/user/Public/tmp/config.json</string>
        </array>
    </dict>
</plist>

相关内容