Я новичок в launchd, так что возможно я сделал что-то неправильно. У меня есть сценарий, который я собираюсь запустить ежечасно. Для этого я создал файл plist со следующей записью, чтобы это произошло:

<key>StartInterval</key>
<integer>3600</integer>

Он работает примерно ежечасно, но он работает примерно так, как если бы интервал времени был от полного времени одного экземпляра до времени начала следующего. Я говорю это, потому что время начала становится стабильно позже. Вот список:

Aug 30 21:00:43 2016 2016083021 
Aug 30 22:00:45 2016 2016083022 
Aug 30 23:00:49 2016 2016083023
Aug 31 00:00:51 2016 2016083100
Aug 31 01:00:53 2016 2016083101
Aug 31 02:00:54 2016 2016083102
Aug 31 03:00:56 2016 2016083103 
Aug 31 04:00:57 2016 2016083104
Aug 31 05:00:58 2016 2016083105
Aug 31 06:01:00 2016 2016083106
Aug 31 07:01:02 2016 2016083107
Aug 31 08:01:06 2016 2016083108
Aug 31 09:01:11 2016 2016083109
Aug 31 10:01:17 2016 2016083110
Aug 31 11:01:22 2016 2016083111
Aug 31 12:01:27 2016 2016083112
Aug 31 13:01:32 2016 2016083113
Aug 31 14:01:38 2016 2016083114
Aug 31 15:01:43 2016 2016083115
Aug 31 16:01:51 2016 2016083116
Aug 31 17:01:56 2016 2016083117
Aug 31 18:02:02 2016 2016083118

Это известная особенность launchd? Должен ли я установить свой стартовый интервал по-другому?

1 ответ1

1

StartInterval повторяется примерно через указанное количество секунд. StartCalendarInterval повторяется в указанное время календаря / часов.

Вот что я использовал:

<key>StartCalendarInterval</key>
<array>
    <dict>
    <key>Minute</key>
    <integer>0</integer>
    </dict>
</array>

Все еще есть некоторая случайная задержка, но она происходит после указанного времени, а не после истекшего периода, поэтому она не становится постепенно увеличивающейся позже.

Sep  1 21:00:08 2016 2016090121
Sep  1 22:00:04 2016 2016090122
Sep  1 23:00:04 2016 2016090123
Sep  2 00:00:02 2016 2016090200
Sep  2 01:00:06 2016 2016090201
Sep  2 02:00:08 2016 2016090202
Sep  2 03:00:02 2016 2016090203
Sep  2 04:00:06 2016 2016090204
Sep  2 05:00:02 2016 2016090205
Sep  2 06:00:02 2016 2016090206
Sep  2 07:00:07 2016 2016090207
Sep  2 08:00:03 2016 2016090208
Sep  2 09:00:04 2016 2016090209
Sep  2 10:00:09 2016 2016090210
Sep  2 11:00:11 2016 2016090211
Sep  2 12:00:11 2016 2016090212
Sep  2 13:00:08 2016 2016090213
Sep  2 14:00:10 2016 2016090214
Sep  2 15:00:10 2016 2016090215
Sep  2 16:00:11 2016 2016090216
Sep  2 17:00:11 2016 2016090217
Sep  2 18:00:14 2016 2016090218
Sep  2 19:00:09 2016 2016090219
Sep  2 20:00:07 2016 2016090220

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .