我正在尝试安排我的AppleScript以60秒的间隔运行,运行两个shell脚本,并且在60秒后输出两个文件(StandardErrorPath和StandardOutPath)时似乎正确设置了我的plist,但我没有看到结果我的shell脚本看起来就像我在脚本编辑器中运行脚本时那样。对我来说,这似乎意味着ProgramArguments部分没有加载我的AppleScript。谁能指出我正确的方向?我应该在AppleScript中添加某种类型的日志记录来记录我的plist中的错误文件吗?
AppleScript文件(Shell脚本在脚本编辑器和终端中正确运行):
do shell script "cd /Users/user/Desktop/Projects/node/webmasters-cli && /Users/user/.nvm/versions/node/v4.3.2/bin/node app.js DesktopUSA"
do shell script "cd /Users/user/Desktop/Projects/node/webmasters-cli && /Users/user/.nvm/versions/node/v4.3.2/bin/node app.js DesktopAll"
plist(位于/ Users / user / Library / LaunchAgents)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.webmasters.daily.pull</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/Users/user/Desktop/Projects/node/webmasters-cli/daily-api-call.scpt</string>
</array>
<key>StartInterval</key>
<integer>60</integer>
<key>StandardErrorPath</key>
<string>/tmp/webmastersDailyTest.err</string>
<key>StandardOutPath</key>
<string>/tmp/webmastersDailyTest.out</string>
</dict>
</plist>
加载到launchctl的步骤:
1)改为目录
2)跑了 launchctl load com.user.webmasters.daily.pull.plist
3)检查 launchctl list
。 plist出现了。
4)检查 /tmp
并且在60秒后创建StandardErrorPath和StandardOutPath文件。文件中没有预期的值。
为什么不直接从launchd运行shell脚本?
—
Mark
@Mark说实话我只是在学习mac上的自动调度,并且不太了解
—
cphill
launchd
。你能安排shell脚本在特定频率上运行吗? (星期几,小时等)
是的,那就是launchd正在做的是运行一个程序,它可以是一个shell脚本 - 为了便于编写plist看看像Launch Control这样的工具
—
Mark
@Mark你可以在答案中建议我对plist的建议更改来运行shell脚本吗?
—
cphill