web-dev-qa-db-ja.com

launchdがスクリプトを開始したかどうかを確認する方法は?

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>
23
hywl51

StartCalendarIntervalを定義したので、ジョブはロード時に実行されましたand毎日18:00に実行されます。

Launchd(8)に問い合わせて、終了ステータスを確認します。

launchctl list | grep mytask

これにより、次の行が返されます。

<pid> <status> mytask

pidが数値の場合、ジョブは現在実行中です。それ以外の場合は、プログラムの終了コードであるstatusを見てください。終了コード0は、プログラムが正常に終了したか、まだ開始されていないことを意味します。プログラムエラーの場合は正の数が返され、負の数はシグナルによりジョブが終了したことを意味します。

ジョブが失敗したと思います。プログラムの標準出力/エラーを確認することをお勧めします。これを行うには、StandardOutPathStandardErrorPathを指定します。これらのファイルの内容から、プログラムが失敗した理由がわかります。

27
LCC