Запуск задания выполняется каждую минуту

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

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

or

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. У кого-нибудь есть идея?


person AaronM    schedule 24.11.2009    source источник


Ответы (1)


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

На странице руководства launchd.plist(5) моей системы 10.4 сказано, что StartCalendarInterval — это «словарь целых чисел». Похоже, что используемый вами «массив словарей целых чисел» задокументирован в справочная страница 10.6 launchd.plist(5). Я нашел сообщение на форуме , в котором указано, что функция массива была представлена ​​в версии 10.5.

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

person Chris Johnsen    schedule 24.11.2009
comment
Я хотел, чтобы запись понедельника была такой же, как и в любой другой день. Та другая дата была просто остатком от некоторых испытаний. Я добавил тестовую строку в скрипт bash и разрешаю запуску launchd каждый день. Кажется, это работает. Спасибо! - person AaronM; 25.11.2009