gpt4 book ai didi

unix - 如何在 MacOS 上加载系统范围的守护进程

转载 作者:行者123 更新时间:2023-12-04 07:00:40 25 4
gpt4 key购买 nike

我正在尝试使用此命令加载我的守护程序应用程序 launchctl load /Library/LaunchDaemons/myPlistFileName它工作正常,但仅当我的用户登录系统时。

我如何加载我的守护程序应用程序,该应用程序将在没有任何用户登录系统的情况下保持加载状态(如 Windows 服务)?

命令 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 权限启动。使用我的用户帐户登录后,守护进程重新启动,我的用户是该进程的新所有者

最佳答案

使用“sudo launchctl load ; sudo launchctl start ”或者,在较新版本的launchctl上,“sudo launchctl submit -l <​​label> -- [ ... ]"是要走的路。

很难在没有实际看到 PLIST 的情况下诊断“sudo launchctl”命令失败的原因,但是您应该确保 PLIST 的权限对每个人都是可读的(但只能由 root:wheel 或 root:admin 写入),您应该确保已经给出了“用户名”和“组名”字段,你应该确保“程序”给出了相关程序的绝对路径(例如,不依赖于用户的特定路径设置环境变量),如果适用,应正确定义“WorkingDirectory”和“EnvironmentVariables”字段。

另请参阅: man launchd.plist

编辑:
在尝试执行“sudo ...加载”之前,您还可以尝试运行“停止”和“卸载”命令。

编辑:
现在你已经上传了你的 PLIST 文件,很明显你的问题是什么......当你作为另一个用户运行时,你不能使用 open 命令。见 running OS X GUI app as root .此外,我敢肯定,KeepAlive 和 OnDemand 键是免费的。我认为这些可以删除。

关于unix - 如何在 MacOS 上加载系统范围的守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com