launchd文件手动运行但不自动运行

时间:2010-12-07 16:36:45

标签: macos osx-snow-leopard plist launchd

我编写了一个plist文件并将其放入/ Library / LaunchDaemons

 <?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.dotcafe.DCDMySQLBackup</string>
 <key>ProgramArguments</key>
 <array>
  <string>/Users/robdando/Webserverbackup/grab.sh</string>
 </array>
 <key>StartInterval</key>
 <integer>900</integer>
</dict>
</plist>

我现在已经手动从终端手动编写脚本,但我似乎无法按照我的要求每隔15分钟运行一次,它调用的脚本会登录到ftp服务器并下载mysql数据库的备份。

提前干杯。

2 个答案:

答案 0 :(得分:2)

您是否已将作业加载到正确的launchd?根据您放置文件的位置,看起来您应该执行sudo launchctl load /Library/LaunchDaemons/com.dotcafe.DCDMySQLBackup.plist。之后,你可以sudo launchctl start com.dotcafe.DCDMySQLBackup吗?

我遇到了基于日历的launchd作业无法正常运行的问题,即使它已加载并且在我launchctl start编辑时工作正常。我试图每天以我的用户身份运行这份工作,所以我的解决方案就是把它变成cron工作。

答案 1 :(得分:-1)

您尚未指定Program密钥,因此无法运行任何内容。您可能希望在没有参数的情况下启动grab.sh

我认为可能存在一些权限问题,因为您尚未指定UserName。此外,如果您的.bash_profile导出程序使用的任何环境变量,则在launchd下运行时可能会导致问题。 (假设grab.sh不使用相对路径。)您可以为程序创建一个启动脚本,该脚本加载.bash_profile然后运行grab.sh