1

У меня есть агент launchd настроенный с помощью функции WatchPaths. Это выглядит примерно так

<?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>com.my.label</string>
    <key>LowPriorityIO</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>PROGRAM HERE</string>
    </array>
    <key>QueueDirectories</key>
    <array/>
    <key>ThrottleInterval</key>
    <integer>10</integer>
    <key>WatchPaths</key>
    <array>
        <string>PATH HERE</string>
    </array>
</dict>
</plist>

Каждые 10 секунд я получаю сообщение на консоль, как

com.apple.launchd.peruser.501: (com.my.label) Throttling respawn: Will start in 10 seconds

Это нормально? Повлияет ли это на мою систему, чтобы эти сообщения записывались в журналы каждые 10 секунд? Там нет ошибок, и сам агент, кажется, работает просто отлично.

1 ответ1

0

launchd будет запускать программу максимум каждые 10 секунд. Из man launchd.plist:

ThrottleInterval <integer>
This key lets one override the default throttling policy imposed on jobs
by launchd.  The value is in seconds, and by default, jobs will not be
spawned more than once every 10 seconds.  The principle behind this is
that jobs should linger around just in case they are needed again in the
near future. This not only reduces the latency of responses, but it
encourages developers to amortize the cost of program invocation.

Если файл в WatchPaths изменяется в течение 10 секунд после последнего вызова, это нормально, что задание регулируется. Установка значения ThrottleInterval ниже 10 не имеет никакого эффекта.

Если вы хотите удалить эти сообщения журнала, добавьте что-то вроде sleep 10 в конец программы.

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