¿Cómo ejecuto una aplicación usando launchd a intervalos regulares?

2

Tengo una aplicación que está escrita en el lenguaje AppleScripting que verifica si el S.M.A.R.T. el estado es 'Verificado' si no lo está, entonces automáticamente me mostrará una alerta de diálogo. Pero lo necesito para correr cada 30 minutos. Usé cron antes pero nunca funciona con la extensión .app. Entonces, ¿cómo puedo lograr ejecutar la aplicación a intervalos regulares usando launchd?

    
pregunta bmike 31.10.2017 - 11:19

2 respuestas

1

Usa oascript para llamar a tu ApplesScript.

$ oascript foobar.applescript

En su plist , su definición de ProgramArguments para iniciar la aplicación sería la siguiente:

<key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>foobar.applescript</string>
    </array>


Para que su elemento se ejecute, necesita una definición de StartInterval que tome un número entero por el número de segundos (1800 por 30 minutos) entre cada ejecución.

<key>StartInterval</key>
<integer>1800</integer>


Un simple pero funcional plist se vería como sigue:

<?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.user.foobar.app</string>
   <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>foobar.applescript</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>

</dict>
</plist>
    
respondido por el Allan 31.10.2017 - 11:48
0

Apple documenta todo lo que necesita para escribir un archivo XML hecho a mano para guardarlo en el sistema de archivos y luego cargarlo con launchtl load /path/to/xml , pero la documentación es muy densa, asume que tiene varios días o semanas de experiencia y tiempo para aprender.

Recomiendo comenzar con una herramienta como LaunchControl o Lingon para facilitar su curva de aprendizaje y agregar una interfaz agradable para seleccionar tiempos de 30 minutos para el intervalo de repetición en lugar de tener que codificar 1800 segundos en el archivo xml.

Esto es lo que ingresaría durante sus 30 minutos y se ejecutará solo cuando el usuario haya iniciado sesión en las restricciones de la aplicación LaunchControl

Nuevamente,puedehacerestoamano,superandotodoslosobstáculosqueenfrentará(erroresdedepuraciónaerroresestándaryerroresestándarcuandolascosasnofuncionan,permisosdedepuraciónyubicacionesdecarpetas/archivos),perogeneralmenteesunapreguntademasiadoamplia.aquíparahacerquealguienpasedeunaideaaunaimplementaciónfuncional.

  • enlace

Iría por las herramientas fáciles a menos que tenga el deseo de dominar varias herramientas de scripting y el daemon de inicio y el sistema de control bajo el capó.

    
respondido por el bmike 31.10.2017 - 12:59

Lea otras preguntas en las etiquetas