He escrito un agente de arranque:
Label
local.mylaunchagent.plist
ProgramArguments
~/my_script.sh
StartInterval
12
StandardOutPath
~/my_log_file
StandardErrorPath
~/my_err_file
RunAtLoad
Funciona, pero se ejecuta cada 22 segundos en lugar de cada 12 segundos, porque ~/my_script.sh
tarda 10 segundos en terminar.
launchd parece estar sumando el tiempo de intervalo y el tiempo de ejecución juntos, aunque yo quiero que el programa se ejecute cada intervalo. No quiero que launchd espere a que termine.
Así que intenté ejecutar el programa en segundo plano:
ProgramArguments
/bin/zsh
-c
~/my_script.sh & disown
Pero ahora no obtengo ninguna salida en absoluto, así que sospecho que launchd mata todos los procesos generados tan pronto como el proceso que lanzó sale.
Entonces mi pregunta es, ¿cómo puedo iniciar un comando lento (que tarda más de 10 segundos en terminar de forma impredecible) cada 12 segundos de forma fiable?