0

編集:解決しました!XML の各「分」の後に余分な「>」がありました。ありがとうディケイ。

1 日 3 回、午前 1 時、午前 9 時、午後 7 時に実行されるように Python スクリプトを設定しようとしています。動作していた cron を使用するつもりでしたが、コンピューターがスリープ状態のときにコンピューターを再度開いたときにジョブを実行したいと考えています。cron はこれを行いませんが、明らかに launchd はこれを行うはずですが、問題が発生しています。正しい時間にジョブの実行を開始しますが、その後は 1 分ごとに実行されるため、1 回だけ実行したいと考えています。

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 は .py を含む単なるファイルですprint 'Hello world'。しかし、一度だけ実行したいのに、毎分実行されています。

毎分実行される同様の名前の Launchd ジョブのこの質問は、配列機能が OS X 10.5 まで追加されなかったこと、および 3 回を別々の plist ファイルに入れる必要があることを示唆していますが、1 つだけのファイルを試してみました私は Mountain Lion (OS X 10.8.3) を実行しているので、問題にはなりません。TimeOut と ExitTimeOut に関連する他の提案を見たことがありますが、それらが関連しているかどうかはわかりません。

次の8時間までプログラムを1回だけ実行するにはどうすればよいですか?

4

0 に答える 0