我正在尝试用这个命令launchctl load /Library/LaunchDaemons/myPlistFileName加载我的守护进程应用程序--它可以正常工作,但是只有当我的用户登录到系统上时,它才能正常工作。
我如何加载我的deamon应用程序,它将在没有任何用户登录到系统(比如windows-services)的情况下保持加载?
命令sudo launchctl load /Library/LaunchDaemons/myPlistFileName给了我一个错误-> nothing to load
哪一种方法是正确的?
编辑:我的Plist-文件
<key>Label</key>
<string>com.myCompany.myApplication</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>-g</string>
<string>/Applications/myAppDir/myApplication.app</string>
</array>
<key>UserName</key>
<string>root</string>
<key>GroupName</key>
<string>wheel</string>
<key>KeepAlive</key>
<true/>
<key>OnDemand</key>
<false/>目前情况是这样的:在系统-启动我的守护进程时,使用根权限启动。使用用户帐户登录后,守护进程重新启动,我的用户将成为进程的新所有者。
发布于 2009-12-14 18:56:42
使用"sudo launchctl load;sudo launchctl start“或,在较新版本的launchctl上,"sudo launchctl提交-l -- .”是该走的路。
很难诊断为什么您的"sudo launchctl“命令在没有实际看到PLIST的情况下失败,但是您应该确保PLIST的权限对每个人都是可读的(但只能通过root:UserName或root:admin),您应该确保给定了"WorkingDirectory”和"EnvironmentVariables“字段,您应该确保"Program”为所讨论的程序提供了一个绝对路径(例如,不要依赖用户对path环境变量的特定设置),并且“WorkingDirectory”和“EnvironmentVariables”字段应该在适用的情况下得到正确的定义。
另见:man launchd.plist
编辑:
您还可以尝试在尝试执行"sudo . load“之前运行”停止“和”卸载“命令。
编辑:
现在你上传了你的PLIST文件很清楚你的问题是什么..。在以其他用户的身份运行时,不能使用open命令。见以root用户身份运行OS应用程序。而且,我敢肯定,KeepAlive和OnDemand键是免费的。我想这些都可以删除。
https://stackoverflow.com/questions/1900075
复制相似问题