Programar tareas en Linux facilmente con cron y crontab

Los guiones (scripts) y la automatización son aspectos básicos para la administración de sistemas informáticos. En el artículo de hoy vamos a ver como programar tareas, de manera automática, en nuestros sistemas GNU Linux, utilizando el servicio (daemon) llamado «cron»

El servicio «cron» es una herramienta enfocada a hacer funcionar comandos y scripts de manera programada.

Lee una serie de ficheros de configuración, con una lista de líneas de comandos relacionados a unos horarios y fechas. Los comandos son ejecutados mediante ‘sh’. De esta manera todas esas tareas repetitivas que estás acostumbrado a realizar de manera manual, las puedes programar para que funcionen de manera automática.

El fichero general de configuración de este servicio se llama “crontab”, donde se guarda la configuración de la llamada “cron table

¿Cómo puedo añadir tareas? ¿Qué formato utilizar?

Todos los ficheros de crontab tienen una configuración similar. Los comentarios se introducen mediante el símbolo “#” al principio de la línea.

Cuando queremos añadir una tarea y queremos añadir la fecha y la hora, tiene que seguir el siguiente formato:

“Minutos” “horas” “día del mes” “día de la semana” y “comando a ejecutar”

Estos parámetros se han de separar siempre por un solo espacio. En la siguiente tabla podéis ver un resumen:

Parámetro Descripción Rango
minutos Minutos de una hora 0 hasta 59
hora Horas de un día 0 hasta 23
día mes Día del mes 1 hasta 31
mes año Mes del año 1 hasta 12
día semana Día de la semana 0 hasta 6 (0 = Domingo)

Cada uno de estos campos relacionados con el tiempo puede contener:

– Una estrella, que combina con todo, esto es, si fijamos una estrella “*” en el campo de la hora, se ejecutará cada hora.
– Un entero único
– Dos enteros separados por guiones, que coinciden con un rango de valores
– Un rango seguido de una barra inclinada y un valor de paso
– Una lista de enteros o rangos separados por comas, que coinciden con cualquier valor

Un ejemplo:

  1. 15 18 * * *

De esta manera cada día, a las 18:15 se ejecutará el comando o script que indiquemos. En cambio:

  1. 15 18 * * 1-5

Al añadir en el último campo “1-5”, se ejecutará todos los días desde el lunes hasta el viernes.

Estos parámetros, para añadirlos, debemos escribir:

  1. crontab -e

Y para listar las taresa programadas:

  1. crontab -l

Además podemos listar las tareas de un usuario en particular:

  1. crontab -l -u "usuario"

Volviendo a la configuración de las tareas, podemos indicar que ejecuta una tarea cada diez minutos:

  1. 0,10,20,30,40,50 18 * * 1-5

De esta manera se ejecutará de lunes a viernes a partir de las seis de la tarde cada diez minutos, ejecutándose por última vez en el día a las 18:50

Una manera más sencilla sería:

  1. */10 18 * * 1-5

Esta es una forma simplificada. En cualquier caso de las dos maneras conseguiremos el mismo fin.

También podemos utilizar una serie de palabras reservadas, que puedes facilitarnos las cosas:

  • @hourly: cada hora
  • @daily: una vez al día
  • @monthly: una vez al mes
  • @yearly: una vez al año
  • @reboot:se ejecuta una única vez en el reinicio

Lo dejamos aquí. Durante todos estos años he utilizado este servicio en muchos artículos, pero no me había dado cuenta que no tenía una entrada dedicada a él en exclusiva.

Espero que haya sido de vuestro interés, nos vamos leyendo ^.^

La imagen del reloj despertador tiene derechos Creative Commons | Pixabay.com