我一直在建设有系统托盘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
错误。
这究竟是为什么?
我想我解决我自己的问题。它似乎是错误78
是当我使用
<key>StandardErrorPath</key>
<string>/var/log/test-err.log</string>
<key>StandardOutPath</key>
<string>/var/log/test-out.log</string>
当我删除了此线,误差消失。这是特别奇怪,因为plist
文件具有根权限和launchd
以root身份运行...