问题描述
我试图在我的 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 (将#修改为@)