我想在启动时(而不是登录时)以特定用户身份运行脚本。我认为 launchd LaunchDaemon 会做到这一点,但 'man launchd' 说:
“如果您希望您的服务作为某个用户运行,在该用户的环境中,使其成为启动代理是在 Mac OS X 上完成此任务的唯一支持的方法。换句话说,执行 setuid(2) 是不够的) 成为真正意义上的 Mac OS X 用户。”
他们不是在开玩笑——当我尝试将我的脚本作为 LaunchDaemon 运行时,它不起作用。特别是,我正在尝试使用“security”命令自动执行一些钥匙串操作,当我通过 LaunchDaemon 运行脚本时,它不会让我更改默认钥匙串,尽管脚本在从 shell 使用 sudo 运行时运行良好。
LaunchAgent 不起作用,因为目标是让进程在没有用户登录的情况下运行,而 LaunchAgents 仅在有人登录时运行。我查看了 cron 和 @reboot 指令,看起来很有希望,但我读到 cron 是在 OSX 上已弃用。