我正在尝试运行一项作业,launchd
该作业运行一个 shell 脚本,该脚本创建一个 zip 文件,然后我将其备份。
我收到错误:6/26/13 5:04:37.992 PM com.apple.launchd.peruser.501[162]: (com.ian.evernote[18163]) Exited with code: 1
这是我的launchd 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>com.ian.evernote</string>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>ProgramArguments</key>
<array>
<string>/Users/user/Dropbox/evernote.sh</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
这是我的 shell 脚本:
#!/bin/bash
sudo zip -r ~/Documents/evernote_backup /Users/user/Library/Containers/com.evernote.Evernote/Data/Library
shell 脚本在终端中运行良好。我做错了什么?
答案1
您无法在脚本内执行sudo
。谁会输入密码?您为什么需要这个?看起来您正在主文件夹内操作,您应该拥有所需的所有权限。
有两种解决方案。
- 您需要提升权限
将此作业设为启动守护进程而不是代理。确保将路径更改为绝对路径(~
将扩展到执行用户的主目录,用于/
启动守护进程)。
- 您无需担心标准权限
不要使用sudo
。
另外:由于脚本由一行组成,我建议删除该脚本并zip
直接调用:
<key>ProgramArguments</key>
<array>
<string>/usr/bin/zip</string>
<string>-r</string>
<string>/Users/user/Documents/evernote_backup</string>
<string>/Users/user/Library/Containers/com.evernote.Evernote/Data/Library</string>
</array>