2013-05-23 10 views
15

私はmacproで毎日18時にはコマンドを起動するようにlaunchdを設定しましたが、動作しませんでした。launchdがスクリプトを開始したかどうかを確認する方法は?

launchdがコマンドを実行したかどうかを確認したいと思います。私はシステムコンソールを試して、貴重なものは何も見つかりませんでした。

どこでもMy 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> 
+0

私は気づいていない人たち(私のような人)には指摘しますが、実行可能ファイルは完全に '/ opt/local/bin/node'です。これは、スクリプトが[ユーザーのアカウントで実行されているにもかかわらず](https://discussions.apple.com/thread/3244126?tstart=0)のように、launchdが[異なる環境設定](https: //developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#pageタイトル)。 – Jeff

答えて

18

あなたはStartCalendarIntervalを定義し、それがにロードされたときにジョブが実行されたとそれはなります毎日18:00に実行されます。

クエリのlaunchd(8)は、その終了ステータスを調べるには:

<pid> <status> mytask 

pidが数字の、ジョブが現在実行されています

launchctl list | grep mytask 

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

私はジョブが失敗したと見なします。あなたは、プログラムの標準出力/エラーをチェックしたいかもしれません。これを行うにはStandardOutPathStandardErrorPathを指定してください。これらのファイルの内容により、プログラムが失敗した理由がわかります。

+0

私はlaunchctlリストを実行し、ステータスが0になっています。上記のようにplistにStandardOutPathとStandardErrorPathを追加しましたが、launchctl startでタスクを実行した後にファイルが見つかりませんでした。だから私はまだタスクが開始されていないようだと思う。 – hywl51

+2

ジョブ定義を変更した後で、ジョブ定義を再ロードしてください( 'unload'、次に' load')。ファイルを変更して開始コマンドを発行するだけでは、そのジョブは実行されません。 – LCC

+0

ありがとうございます。タスクをアップロードして読み込んだら、StandardOutPathとStandardErrorPathは正常に動作します。 – hywl51

関連する問題