launchd错误地每分钟运行一次作业

时间:2013-03-20 02:42:52

标签: python plist launchd

编辑:解决了!有一个额外的'>'在XML中的每个“分钟”之后。谢谢Dikei。

我正在尝试设置一个python脚本,每天运行3次,凌晨1点,早上9点和晚上7点。我打算使用正在运行的cron,但是如果我的电脑在其中一个时间睡着了,我仍然希望在我再次打开电脑时运行该作业。 cron没有这样做,但显然推出应该这样做,但我遇到了问题。它将在正确的时间开始执行我的工作,但它会每分钟执行一次,我只希望它运行一次。

这是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.test</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/python</string>
      <string>/Users/myname/helloworld.py</string>
    </array>
    <key>StandardOutPath</key>
    <string>/Users/myname/log.txt</string>
    <key>StandardErrorPath</key>
    <string>/Users/myname/log.txt</string>  
    <key>StartCalendarInterval</key>
      <array>
        <dict>
          <key>Hour</key>
          <integer>1</integer>
          <key>Minute></key>
          <integer>0</integer>
        </dict>
        <dict>
          <key>Hour</key>
          <integer>9</integer>
          <key>Minute></key>
          <integer>0</integer>
        </dict>
        <dict>
          <key>Hour</key>
          <integer>19</integer>
          <key>Minute></key>
          <integer>0</integer>
        </dict>
      </array>
    <key>KeepAlive</key>
    <false/>
  </dict>
</plist>

在这种情况下,helloworld.py只是一个包含print 'Hello world'的文件。但它每分钟都会被执行,而我只想让它执行一次。

具有类似名称Launchd job running every minute的这个问题表明在OS X 10.5之前没有添加数组功能,并且我必须将三次放入单独的plist文件中,但我尝试了一个文件只是一次,它也没有用,我正在运行Mountain Lion(OS X 10.8.3),所以它应该不是问题。我已经看到了有关TimeOut和ExitTimeOut的其他建议,但我不确定这些建议是否相关。

我怎样才能让它只运行一次,直到下一个8小时?

0 个答案:

没有答案