问题描述
我有一个非常简单的 zsh 脚本,我想使用 launchd 定期运行它。我决定使用 launchdaemons,因为它看起来更通用。我相信这个过程开始了,因为路径中有输出,定义在 plist 文件的 StandardErrorPath
键中。
脚本如下所示:
#!/bin/zsh
echo "hello"
plist 文件如下所示:
当我使用
加载launchd
进程时
launchctl load /Library/launchdaemons/testplist.plist
没有错误信息,但是在system.log中每次尝试执行时都会出现错误信息。它有点变化,但我一直有一个错误:
此外,每次在系统日志中添加错误 127 时,都会在 plist 中指定的文件中添加一行 StandardErrorPath
。这条线是
/bin/zsh: 无法打开输入文件:/Users/username/Downloads/zsh/test.zsh
我尝试了什么:
- 使用
sudo chown root testplist.plist
将 plist 所有者从我的用户更改为 launchdaemons 文件夹中的根目录 - 使用
chmod +x filename
从 zsh 脚本制作可执行文件 - 自行运行脚本,成功 (
/bin/zsh /Users/username/Downloads/zsh/test.zsh
)
最后一件事,可能相关也可能不相关,当我编写 zsh 脚本时,我将权限更改为 750,因为这是教程所说的,否则它不会运行。
plist 的文本格式:
<?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>testplist</string>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>20</integer>
<key>StandardErrorPath</key>
<string>/Users/username/Downloads/zsh/stderr.log</string>
<key>StandardOutPath</key>
<string>/Users/username/Downloads/zsh/stdout.log</string>
<key>Program</key>
<string>/Users/username/Downloads/zsh/test.zsh</string>
<key>KeepAlive</key>
<true/>
<key>Debug</key>
<true/>
</dict>
</plist>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)