2013-05-23 2 views
15

Я настроил launchd, чтобы начать команду в 18 вечера каждый день на моем mac pro, но он не работал.Как проверить, запущен ли startd скрипт?

Я хочу проверить, запущена ли программа запуска. Я попробовал системную консоль, не нашел ничего ценного.

мой 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), чем пользователь, несмотря на то, что сценарий [выполняется под учетной записью пользователя] (https: //developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#pageTitle). – Jeff

ответ

18

Вы определили StartCalendarInterval, поэтому работа была выполнена, когда он был загружен и будет исполняется каждый день в 18:00.

Query запуск программ (8), чтобы выяснить его состояние выхода:

launchctl list | grep mytask 

это вернет линию строке:

<pid> <status> mytask 

Когда pid это число, работа в настоящее время работает. В противном случае посмотрите на status, который является кодом выхода программы, узлом в вашем случае. Код выхода 0 означает либо то, что программа была успешно завершена, либо она еще не запущена. Положительные числа возвращаются для программных ошибок, а отрицательные - означают, что задание завершилось из-за сигнала.

Я предполагаю, что работа не удалась. Вы можете проверить стандартный вывод/ошибку программ. Задайте StandardOutPath и StandardErrorPath. Содержимое этих файлов, скорее всего, скажет вам, почему программа не удалась.

+0

Я запустил список запуска и получил статус 0. Я добавляю StandardOutPath и StandardErrorPath к plist, как указано выше, но после запуска задачи с запуском startct не было найдено ни одного файла. Поэтому я чувствую, что задача еще не началась. – hywl51

+2

Убедитесь, что вы изменили определение задания ('unload', а затем' load') после его изменения. Просто изменение файла и выдача команды запуска не будут выполнять задание. – LCC

+0

Спасибо. После загрузки и загрузки задачи StandardOutPath и StandardErrorPath работают нормально. – hywl51

Смежные вопросы