編集:解決しました!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回だけ実行するにはどうすればよいですか?