使用bsexec的launchctl加载时无效的参数错误

时间:2013-09-12 18:59:48

标签: macos unix launchd

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

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

我的过程就是这样:

  1. 使用launchtl bsexec PID launchctl unload /Library/LaunchAgents/plist以root身份卸载/ Library / LaunchAgent plist。 bsexec PID参数允许root用户卸载由非root launchd进程管理的plist。这很有效。
  2. 然后我将以root身份更新每台计算机上的plist。这也很好。
  3. 最后,我需要使用launchctl重新启动/ Library / LaunchAgent plist。这是我的流程崩溃的地方。我无法使用launchctl bsexec PID load /Library/LaunchAgents/plist启动我的plist - 我收到一个无效的参数错误。
  4. 有关如何以root身份使用当前用户权限重新启动服务的任何想法吗?

2 个答案:

答案 0 :(得分:0)

尝试在第二次启动之前添加'sudo'

sudo launchctl bsexec PID sudo launchctl load /Library/LaunchAgents/Your.plist

答案 1 :(得分:0)

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

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

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

KBAI