27

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>
4

1 に答える 1

33

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

launchd(8) にクエリを実行して、その終了ステータスを確認します。

launchctl list | grep mytask

これは次のような行を返します:

<pid> <status> mytask

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

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

于 2013-05-24T04:40:17.807 に答える