【问题标题】:launchd file runs manually but not automaticallylaunchd 文件手动运行但不会自动运行
【发布时间】:2010-12-07 16:36:44
【问题描述】:

我已经写了一个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 数据库的备份。

提前干杯。

【问题讨论】:

    标签: macos osx-snow-leopard plist launchd


    【解决方案1】:

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

    我遇到了一个基于日历的launchd 作业没有在它应该运行的时候运行的问题,即使它在我launchctl started 时已经加载并且工作正常。我试图以我的用户身份每天运行该作业,所以我的解决方案是将其变成 cron 作业。

    【讨论】:

    • 我好像也有类似的问题;你有没有发现为什么它没有在launchd中运行?我还有其他计划的工作可以正常工作,但不能正常工作(而且,就像对你一样,它“launchctl start 没问题)。
    【解决方案2】:

    你没有指定Program 键,所以它不能运行任何东西。可能,您想在没有参数的情况下启动 grab.sh

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

    【讨论】:

    • Program 不存在时,launchd 使用ProgramArguments 数组的第一个元素。
    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 2019-02-07
    • 2022-06-23
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2015-06-05
    • 2010-12-23
    相关资源
    最近更新 更多