Mac Proで毎日18時にコマンドを開始するようにlaunchdを構成しましたが、機能しませんでした。
Launchdがコマンドを実行したかどうかを確認したい。システムコンソールを試してみましたが、貴重なものは見つかりませんでした。
私のmac osバージョンはmac os x 10.8.3です
私の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>mytask</string>
<key>Program</key>
<string>/opt/local/bin/node</string>
<key>ProgramArguments</key>
<array>
<string>/Users/xxx/My/task.js</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>18</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/Users/xxx/launchd.stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/xxx/launchd.stderr.log</string>
</dict>
</plist>
StartCalendarInterval
を定義したので、ジョブはロード時に実行されましたand毎日18:00に実行されます。
Launchd(8)に問い合わせて、終了ステータスを確認します。
launchctl list | grep mytask
これにより、次の行が返されます。
<pid> <status> mytask
pid
が数値の場合、ジョブは現在実行中です。それ以外の場合は、プログラムの終了コードであるstatus
を見てください。終了コード0は、プログラムが正常に終了したか、まだ開始されていないことを意味します。プログラムエラーの場合は正の数が返され、負の数はシグナルによりジョブが終了したことを意味します。
ジョブが失敗したと思います。プログラムの標準出力/エラーを確認することをお勧めします。これを行うには、StandardOutPath
とStandardErrorPath
を指定します。これらのファイルの内容から、プログラムが失敗した理由がわかります。