Un tutorial de lanzamiento simple
Supongamos que ha escrito un pequeño script que desea ejecutar de vez en cuando. Si está utilizando un Mac, launchd
es una herramienta perfecta para usar.
Es mejor que crontab
porque, entre otras cosas, si su computadora está apagada cuando está programada la ejecución de su programa, launchd
ejecutará su programa tan pronto como el equipo se despierte. Mientras tanto, crontab
no lo hará.
Lo primero que hay que hacer es crear un script para ejecutarlo. Voy a escribir un nodo simple.js pero puedes usar lo que quieras.
touch ~/demo/main.js
Para el bien de este ejemplo, todo lo que este script va a hacer es registrar la hora en que se ejecutó.
console.log("Hello", Date.now())
Ahora necesitamos crear un archivo plist de configuración launchd
.
touch ~/Library/LaunchAgents/com.demo.daemon.plist
Un archivo plist es solo el formato XML personalizado de Apple para las configuraciones. Pega este código ahí. Es posible que necesite cambiar /Users/chet/demo
al directorio que está utilizando para este ejemplo.
Este archivo especifica algunas cosas:
- El demonio se iniciará cada vez que el usuario inicie sesión.
- Se ejecutará cada 20 segundos.
- Dará salida a algunos archivos de registro (muy útil para la depuración).
- Establecerá la ruta del entorno (útil si su programa utiliza otros comandos de
usr/local/bin
). - El comando se ejecutará en el directorio
/Users/chet/demo
. - Y el comando es
/usr/local/bin/node main.js
.
Hay un montón de otras opciones sobre las que puedes leer aquí. Una opción comúnmente utilizada es la opción KeepAlive
, que reiniciará el script cada vez que finalice o se bloquee. Esto es útil si desea que su script esté siempre en ejecución.
Ahora, solo tenemos que ponerlo en marcha. Primero, abre el Console.app
. Es posible que nunca lo hayas usado antes, pero es una aplicación de utilidad nativa para depurar este tipo de cosas. En el sistema.sección de registro, puede buscar com.demo.daemon
para ver si hay algún error del sistema cuando intenta iniciar launchd
.
de Vuelta en su Terminal, ejecute el siguiente comando.
launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist
Si ve algunos errores en el Console.app
, puede detener el demonio con unload
y buscar errores en el archivo stderr.log
.
launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log
Si todo salió bien, no debería ver nada en el Console.app
y debería ver los registros que ingresan al archivo ~/demo/stdout.log
cada 20 segundos.