2009-11-24 3 views
1

Я пытаюсь написать сценарий запуска, который запускается один раз в день, только по будням. Но как только я загружаю скрипт, он запускается каждую минуту, а не только по расписанию. Это происходит загружаю ли сценарий, как я или как суперпользователь:Запуск задания каждую минуту

launchctl load ~/Library/LaunchAgents/org.myname.foojob

или

sudo launchctl load /Library/LaunchDaemons/org.myname.foojob

Это файл PLIST:

org.myname.foojob

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 

<plist version="1.0"> 

<dict> 

    <key>Label</key> 

    <string>org.myname.foojob</string> 

    <key>ProgramArguments</key> 

    <array> 

     <string>/Users/myname/bin/foojob.sh</string> 

    </array> 

    <key>StartCalendarInterval</key> 

    <array> 

      <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>1</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>2</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>3</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>4</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>5</integer> 

     </dict> 
    </array> 
</dict> 
</plist> 

Я используя это с оригинальным встроенным стартером в Mac OSX 10.4. Надеюсь, это просто что-то не так с файлом plist. У кого-нибудь есть идея?

ответ

2

Я также получаю ваше одноразовое поведение в моей системе 10.4 с этим конфигурационным файлом.

В man-системе launchd.plist (5) моей системы 10.4 сказано, что StartCalendarInterval является «словарем целых чисел». Похоже, что «массив словаря целых чисел», который вы используете, задокументирован в the 10.6 launchd.plist(5) manpage. Я нашел forum post that indicates that the array feature was introduced in 10.5.

Для 10.4 вам, вероятно, придется создать один файл для каждого StartCalendarInterval, который вы хотите использовать. Или, если вы можете использовать одно и то же время каждый день (приведите понедельник в соответствие с другими), вы можете оставить спецификацию Weekday в файле plist (чтобы ваш скрипт выполнялся в указанное время каждый день) и затем сделайте свой скрипт выйдите раньше, если день недели - выходной день test "$(date +%u)" -lt 6 || exit 0).

+0

Я имел в виду запись в понедельник в то же время, что и каждый день. Эта другая дата была просто остаточной частью некоторых тестов. Я добавил строку «тест» к скрипту bash, и я разрешаю запускать каждый день. Кажется, это работает. Спасибо! – AaronM

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