¿Qué es un programador de tareas?
Un programador de tareas es una aplicación de las que conocemos como tipo “demonio”, que esta ejecutándose en segundo plano y en tiempo real y que ejecuta un guion con las instrucciones que nosotros hayamos programado en días, horas o segundos concretos. Es el amigo ideal cuando se trata de automatización de tareas, como puede ser actualizar los certificados de nuestro servidor web, hacer una copia diaria de la base de datos de nuestra web
Automatiza tareas con crontab
Un ingenios@ de sistemas se enfrenta a muchas tareas que tiene que ejecutar de manera periódica. En el momento que tengas un sistema en marcha, hay tareas, como copias de seguridad, que debes realizar si no quieres tener disgustos y ten por seguro que si no las haces los vas a tener. Es una de las grandes verdades de la tecnología, sustos, vas a tener.
Cuantos más sistemas tienes, más numerosas son las tareas que debes realizar, algunos de las aplicaciones como WordPress y muchas otras, tienen módulos que facilitan estas tareas, como las copias de seguridad y las actualizaciones, pero cuando los plugin tienen opciones interesantes, que realmente quitan trabajo, suelen ser de pago, y nuestro objetivo es hacer todo con el menor coste posible, por lo que el tema de las tareas lo automatizamos siempre que podamos, sin coste
La buena noticia es que los sistemas Linux disponen de una herramienta llamada cron, que es un programador de tareas y que se encarga de ejecutar líneas de comando escritas en el fichero o crontab, a horas y días determinados, de una forma recurrente, lo cual resulta realmente útil.
Cómo funciona Crontab
La herramienta cron o crontab, fue desarrollada por Brian Kernighan en 1979 y se basaba en un algoritmo tan sencillo y que funciona tan bien, que se ha mantenido hasta nuestros días, algoritmo base del cron
Así de sencillo, comprobar cada minuto si hay algún comando o script de comandos que deba ejecutarse. Tan sencillo como eficiente, estas suelen ser las soluciones más ingeniosas, hay que tener en cuenta que Linux es un sistema operativo en tiempo real y también es un sistema multiusuario, así que este programador de tareas debe realizar esta comprobación para cada usuario, incluido root.
El nombre de la herramienta es CRON, pero como los datos de tareas a ejecutar se escriben en un fichero que se llama crontab, este programador de tareas también se conoce como crontab.
Programando tareas cron
La implementación de tareas es muy sencilla, se edita el fichero /usr/etc/crontab y se pone una línea de texto por cada tarea que se quiera ejecutar, en esa línea de texto hay que poner unos valores numéricos. El comando en si, va precedido por 5 posiciones que corresponden de izquierda a derecha a:
(Minuto) (Hora) (día del mes 1- 31) (mes 1-12) (dia de la semana 0-6) comando o script de comandos.
En aquella posición en la que usemos un *, quiere decir que es cada unidad, por ejemplo 5 * * * * significa que es en el minuto 5 de cada hora, de cada día del mes de cada mes de cada día de la semana.
Si quisiéramos especificar que la tarea se ejecuta cada 5 minutos, lo haríamos así, */5 * * * *. En la primera posición, en la de los minutos usamos el signo de dividir para separar el * de la frecuencia y esto quiere decir que se ejecuta cada minutos.
Veamos otro ejemplo, * 1 * * * quiere decir a las 1 de la madrugada, mientras que * */1 * * * quiere decir cada hora.
Si queremos hacer una tarea el dia 1 de cada mes a las 22:30 de la noche, solo tendremos que usar 30 22 1 * *
Si quieres una tarea a las 6 de la tarde de lunes a viernes, seria 0 18 * * 1-5, el Lunes es dia 1 ya que el domingo es el 0, 0 y 6 serian Sábado y Domingo.
Te dejo una relación completa de ejemplos de programación cron en este snippet. Y tienes una lista con mucho ejemplos en la pagina de “crontab guru“.
Ahora piensa en la comodidad de las tareas que tienes que realizar normalmente a mano, aprenderás pronto a combinar esta utilidad con algún script de comandos que te ayuda a hacer copias de seguridad, copiar esos respaldos a otros servidores, actualizar el certificado SSL de tus dominios, tareas de mantenimiento del propio servidor.
El programador de tareas bien utilizado puede hacer copias de tus bases de datos, mantenimiento de ficheros en tu servidor para no acumular mucha basura
Resumen:
Cron es un programador de tareas que se ejecuta en segundo plano en tu sistema operativo Linux y que dependiendo de la distribución que tengas, va a ejecutar /etc/rc.d o /etc/init.d y que revisa cada minuto si hay tareas a ejecutar en este fichero /etc/crontab o /var/spool/cron (también depende de la distribución de Linux).
Las tareas dentro de este fichero deben seguir un patrón con 5 posiciones numéricas que determinan el minuto, hora, día del mes, mes y día de la semana. * * * * * seguidos del comando o el script a ejecutar.
Sustituir los asteriscos por los valores numéricos correspondiente al día y hora en que quieres ejecutar la tarea.
¡Que tengas un Ingenioso día!
¡que tengas un ingenioso día!
Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0
Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.