Publicado el 17.07.2021 a las 17:48
A veces queremos realizar una misma tarea cada día a una determinada hora. Para automatizarlo yo uso servicios en Windows o si lo quiero realizar en la nube utilizo los Cron Job.
En sistemas unix, un programa que corre en segundo plano similar a un servicio en Windows es conocido como Cron. Un comando que programa una tarea en un momento específico repetidamente en un sistema Unix es un Cron Job
Dicho de otra forma, Cron Job es una utilidad de Linux que establece un comando o secuencia de comandos de horarios en tu servidor para que algunas tareas se ejecuten automáticamente a una hora y fecha especificadas. Una tarea cron es la tarea programada en sí
La sintásis de un Cron Job es muy sencilla, primero se escribe cuando se quiere que se ejecute un script y a continuación se le espedifica el script
* * * * * /bin/sh script.sh
El significado de cada uno de los asteriscos (*) es:
Por ejemplo, si queremos que se ejecute un script llamado backup cada minuto en el segundo 20 la instrucción sería:
20 * * * * /bin/sh backup.sh
Los carácterese comodines para los tiempo son:
A continuación algunos ejemplos:
Si queremos que se ejecute un script llamado backup cada 5 minutos en el segundo 1 la instrucción sería:
1 */5 * * * /bin/sh backup.sh
También sería válido:
1 0,5,10,15,20,25,30,35,40,45,50,55 * * * /bin/sh backup.sh
Si queremos que se ejecute un script llamado backup 2 veces al día, una vez a las 6 y otra vez a las 18 la instrucción sería:
0 6,18 * * * /bin/sh backup.sh
Si queremos que se ejecute un script llamado backup todos los martes a las 0 horas la instrucción sería:
0 0 * * 2 /bin/sh backup.sh
Si queremos que se ejecute un script llamado backup todos los lunes, miércoles y viernes a las 19 horas:
0 19 * * 1,3,5 /bin/sh backup.sh
En Firebase puedes programar hasta 3 Cron Job por proyecto de manera gratuita.
Por ejemplo, si quieres que se ejecute un determinado código a las 0 horas de la zona horaria de Europe/Madrid sería:
exports.scheduledFunctionCrontab = functions.pubsub .schedule('0 0 * * *') .timeZone('Europe/Madrid') // El usuario puede escoger el timezone - por defecto es America/Los_Angeles .onRun((context) => { //Aquí el código que quieres que se ejecute return null; });
Puedes consultar la documentación oficial de Firebase schedule functions aquí
Un servicio muy potente donde tendrás un tir gratuito bastante generoso. Conoce sus detalles 👉aquí
Tengo pendiente estudiar un servicio totalmente gratuito en cron-job.org el cuál dice que puedes crear hasta 60 Cron Jobs por hora totalmente gratis. Esto es a fecha que estoy escribiendo este post.
Mantendré actualizado esta entrada si hago algún descubirmiento con este servicio.
Hasta luego 🖖