0

我在运行 LaunchDaemons 时遇到问题,这是我的 .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.startup</string>
<key>ProgramArguments</key>
<array>
    <string>/Users/myuser/project/workspace/tomcat/run/tomcat-
   exp.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WatchPaths</key>
<array>
   <string>/Users/myuser/project/workspace/tomcat/log/exp.out</string>
</array>
</dict>
</plist>

这就是我遇到的错误,我已经尝试解决这个问题几个小时但没有成功:(

当我检查系统日志时,这是我发现的:

16239 Dec 28 21:36:29 myyser MRT[1481]: Error: SMJobRemove: The 
operation couldn’t be completed. (CFErrorDomainLaunchd error 2.)
16240 Dec 28 21:36:29 myuser com.apple.xpc.launchd[1] 
(com.apple.mrt[1481]): Service exited with abnormal code: 2
16241 Dec 28 21:36:29 myuser com.apple.xpc.launchd[1] (com.apple.mrt): 
Service only ran for 0 seconds. Pushing respawn out by 10 seco      
nds.
4

1 回答 1

2

您的 plist 看起来正在运行 shell 脚本。未找到命令时报告退出代码 127,通常 $PATH 不正确或只是拼写错误。

除此之外,尽管我只使用了 OnDemand,但您的 plist 看起来还不错,而且我还没有运行脚本。我通常调试守护进程的方法是从命令行运行它们

# /bin/launchctl load /Library/LaunchDaemons/mydaemon.plist

并在 shell 上查看 fprintf 的调试消息。您可以通过添加重定向您的标准输出

<key>StandardOutPath</key>
<string>/var/log/mylog.log</string>

到您的 .plist。您的守护程序在通过命令行手动启动时是否正常工作?

有关bash 脚本的退出代码,请参见此链接

于 2017-12-29T04:55:01.973 回答