Limpando as mensagens do respawn para o terminal com o launchd: isso é normal?

1

Eu tenho um agente launchd configurado usando o recurso WatchPaths. Parece algo como

<?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>

A cada 10 segundos, recebo uma mensagem no console, como

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

Isso é normal? Isso afetará o meu sistema para que essas mensagens sejam gravadas nos logs a cada 10 segundos? Não há erros, e o próprio agente parece funcionar bem.

    
por asmeurer 13.01.2014 / 02:33

1 resposta

0

O launchd só iniciará o programa no máximo a cada 10 segundos. De 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.

Se um arquivo em WatchPaths for modificado dentro de 10 segundos da última chamada, é normal que o trabalho seja acelerado. Definir ThrottleInterval como um valor abaixo de 10 não tem efeito.

Se você quiser remover essas mensagens de log, adicione algo como sleep 10 ao final do programa.

    
por 16.01.2014 / 01:06