LaunchAgent 未以用户身份运行 - 返回代码 78

问题描述

我试图在我的 Mac 上创建一个代理(不是守护进程),它每 X 秒运行一个脚本。我是用 launchctl / launchd 这样做的。我推测(并已阅读)使用 Agent 的好处/目的是它“作为用户”运行,因此可以访问“~”(主目录)等。

但是,如果我尝试在 PLIST 文件中使用“~”,代理虽然正在加载,但不会运行并列出 78 的状态。

> launchctl load ~/Library/LaunchAgents/com.me.myscript.plist 
> launchctl list | grep myscript
-   78  com.me.myscript

脚本看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.me.myscript</string>
    <key>ProgramArguments</key>
    <array>
        <string>~/scripts/myscript.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>10</integer>
</dict>
</plist>

如果我更改了一个程序参数行而不使用 ~,它几乎可以工作。它至少运行脚本,我可以通过日志输出来验证。

...
        <string>/Users/me/scripts/myscript.sh</string>
...

我说几乎的原因是,虽然脚本现在可以运行,但我已经通过引用将相对路径问题“移动”到脚本中,以及脚本应该做什么主目录 ~/...~ 不起作用。

我认为第一个问题是集中我的问题的最佳位置,因为我确定它是相关的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)