我正在尝试使用此命令加载我的守护程序应用程序launchctl load /Library/LaunchDaemons/myPlistFileName
它工作正常,但仅在我的用户登录系统时。
如何加载我的deamon-app,它会在没有任何用户登录系统的情况下保持加载状态(如windows-services)?
命令sudo launchctl load /Library/LaunchDaemons/myPlistFileName
给我一个错误 - > 无法加载
这是正确的方法吗?
编辑:我的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/>
目前是这样的:在系统启动时,我的守护进程以root权限启动。在我使用我的用户帐户登录后,守护程序进程重新启动,我的用户是进程的新所有者
答案 0 :(得分:3)
使用“sudo launchctl load&lt; name-of-plist-file&gt ;; sudo launchctl start&lt; job-name&gt;”或者,在较新版本的launchctl上,“sudo launchctl submit -l&lt; label&gt; - &lt; command&gt; [&lt; arg0&gt; ...&lt; argN&gt;]”是要走的路。
很难诊断为什么你的“sudo launchctl”命令在没有实际看到PLIST的情况下失败,但是你应该确保PLIST的权限对每个人都是可读的(但只能由root:wheel或root:admin写入) ,你应该确定已经给出了“UserName”和“GroupName”字段,你应该确保“Program”给出了相关程序的绝对路径(例如,不依赖于用户的特定设置) PATH环境变量),如果适用,应正确定义“WorkingDirectory”和“EnvironmentVariables”字段。
另请参阅:man launchd.plist
编辑:
在尝试执行“sudo ... load”之前,您也可以尝试运行“stop”和“unload”命令。
编辑:
现在您已经上传了PLIST文件,很清楚您的问题是什么......当您以另一个用户身份运行时,您无法使用open命令。见running OS X GUI app as root。另外,KeepAlive和OnDemand键,我很确定,是无偿的。我想那些可以删除。