1

关于如何从命令行以 root 用户身份加载具有当前用户权限的 plist 有什么想法吗?

我目前正在管理 30 台远程 OSX 机器。我决定使用远程桌面更新每台机器上的 /Library/LaunchAgent plist 文件。由于每台机器都需要一个独特的更新,我不愿意在每台机器上以当前登录用户的身份执行此操作。我正在以 root 用户身份通过​​远程桌面进行更新。我的愿望是使用 停止 plist launchctl,更新 plist,然后重新启动 plist。

我的流程是这样的:

  1. 使用 root 卸载 /Library/LaunchAgent plist launchtl bsexec PID launchctl unload /Library/LaunchAgents/plist。该bsexec PID参数允许 root 用户卸载由非 rootlaunchd进程管理的 plist。这成功了。
  2. 然后,我将以 root 身份更新每台计算机上的 plist。这也很好。
  3. 最后,我需要重新启动 /Library/LaunchAgent plist 使用launchctl. 这就是我的流程崩溃的地方。我无法使用launchctl bsexec PID load /Library/LaunchAgents/plist-- 我收到一个无效参数错误来启动我的 plist。

关于如何以root身份以当前用户权限重新启动服务的任何想法?

4

2 回答 2

0

如果这仍然相关(对我而言),我希望这个答案会有所帮助:

$sudo launchctl bsexec PID /usr/bin/sudo -u USER /bin/launchctl load /Library/LaunchAgents/com.example.agent.plist

这种方式对我有用,将代理加载到正确的引导程序中而不会出错。

克拜

于 2014-07-15T12:55:54.057 回答
0

尝试在第二次 launchctl 之前添加“sudo”

sudo launchctl bsexec PID sudo launchctl load /Library/LaunchAgents/Your.plist
于 2013-12-17T11:11:28.407 回答