launchctl不能用代码78运行的二进制和退出

问题描述 投票:0回答:1

我一直在建设有系统托盘GUI一个golang app。我想launchctl每当我登录运行我的程序程序编译,没有任何错误运行,然而,当launchctl运行它,我看到这个:Service exited with abnormal code: 78。也许它是与权利。

  • 首先,我打算给当前用户的权限设置为两个plist文件和二进制文件。尽管如此错误78
  • 然后,我改变plist文件和二进制的权利根目录并运行sudo launchctl。我仍然看到错误78

/var/log/system.log有这样的错误:

14:46:00 Macchiato com.apple.xpc.launchd[1] (com.test.test[519]): Service could not initialize: 18A391: xpcproxy + 11291 [1534][8188841E-6D08-3F80-8488-9B5D7462BACB]: 0xd
14:46:00 Macchiato com.apple.xpc.launchd[1] (com.test.test[519]): Service exited with abnormal code: 78
14:46:00 Macchiato com.apple.xpc.launchd[1] (com.test.test): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

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.test.test</string>
        <key>ProgramArguments</key>
        <array>
                <string>/Users/test-user/test/test</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>ProcessType</key>
        <string>Standard</string>
        <key>KeepAlive</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/var/log/test-err.log</string>
        <key>StandardOutPath</key>
        <string>/var/log/test-out.log</string>
</dict>
</plist>

错误日志是空的。

当我手动运行binary,显示在系统托盘上的应用程序的图标,如所预期。

还有一个有趣的时刻 - 如果我手动键入launchctl load -w com.test.test.plist,应用程序运行很好 - 直到重新启动。我重新启动后,launchctl抛出78错误。

这究竟是为什么?

macos plist root daemon launchctl
1个回答
0
投票

我想我解决我自己的问题。它似乎是错误78是当我使用

<key>StandardErrorPath</key>
<string>/var/log/test-err.log</string>
<key>StandardOutPath</key>
<string>/var/log/test-out.log</string>

当我删除了此线,误差消失。这是特别奇怪,因为plist文件具有根权限和launchd以root身份运行...

© www.soinside.com 2019 - 2024. All rights reserved.