¿Qué es Crontab y para qué sirve?

7min

Hoy vamos a explicar qué es Crontab y para qué sirve, una herramienta esencial para la administración de sistemas basados en Unix, como  Linux o MacOS. Con Crontab puedes automatizar tareas repetitivas, garantizando que ciertos procesos se ejecuten a horas específicas sin necesidad de intervención manual, algo esencial para la automatización y el mantenimiento de los sistemas. Aprende sus posibilidades y cómo configurarlo con nosotros.

Índice

¿Qué es Crontab?

Crontab es una herramienta de los sistemas operativos similares a Unix, como Linux, que nos permite especificar momentos en el tiempo en los que se tienen que ejecutar procesos. Es la abreviatura de «cron table», algo que cobra sentido porque las tareas se especifican en un archivo de texto que parece una tabla de comandos e intervalos de tiempo.

Para poder definir estas tareas y sus momentos de ejecución usamos una programación definida mediante texto, en una sintaxis un poco particular, pero que no resulta demasiado difícil de entender. La vamos a ver más adelante en este post con ejemplos. Además veremos que este sistema se gestiona por un servicio llamado «cron» que es un demonio que se ejecuta en segundo plano en el sistema operativo, supervisando si existen tareas que deben ejecutarse en un momento dado.

¿Qué es un cron job?

Un cron job no es más que una tarea programada en Crontab. Básicamente consiste en una instrucción definida en el archivo crontab que contiene la definición de una planificación y el propio comando a ejecutar.

En un cron job puedes colocar todo tipo de tareas, desde la ejecución de un script que se encarga de mantener el sistema, el envío de un correo electrónico, la realización de un backup, o lo que se te pueda ocurrir.

¿En qué sistemas operativos se usa Crontab?

Las planificaciones de tareas que se realizan con Crontab son originales de los sistemas Unix, pero actualmente están disponibles en muchos sistemas operativos derivados como Linux o incluso MacOS o BSD.

En Windows no disponemos de ellos pero se pueden hacer con el Programador de Tareas generalmente, aunque podrías llegar a practicar con esta herramienta si lo deseas usando WSL (Windows Subsystem Linux).

¿Para qué sirve Crontab?

Ya hemos introducido en modo general las posibilidades de uso de Crontab, pero vamos a verlas ahora con algunos ejemplos más específicos.

Automatizar tareas repetitivas en sistemas Unix

La automatización de tareas es la principal utilidad de Crontab en los sistemas Linux. Esto incluye todo tipo de acciones que queremos realizar sin necesidad de intervención humana como por ejemplo las copias de seguridad, la limpieza de archivos temporales, la generación de informes, etc.

Programar scripts de mantenimiento del servidor

Resulta también muy útil para realizar de manera automática todo tipo de trabajos enfocados al mantenimiento del servidor, por ejemplo el reinicio de servicios o la liberación de memoria. También se puede utilizar para monitorizar los archivos de logs o verificar el estado del sistema.

Realizar copias de seguridad periódicas

Como hemos dicho, Crontab es la herramienta más habitual para programar la realización de backups a las horas en las que se deseen hacer las copias.

Por ejemplo podemos definir que cada noche, a la madrugada, se realice una copia de una carpeta, de modo que se guarde en un lugar seguro. Pero también podemos escribir scripts más avanzados mediante los cuales se realicen procesos de copias de seguridad de elementos como las bases de datos, se compriman los archivos y se envíen a otros servidores utilizando algún protocolo que permita la transferencia de archivos.

Enviar correos electrónicos automatizados desde el sistema

También se puede enviar emails mediante Crontab. Esos correos electrónicos podrían contener cualquier tipo de información como informes, alertas o las copias de seguridad realizadas en procesos de backup, por ejemplo.

Ejecutar actualizaciones y limpiezas programadas

También es posible realizar tareas y mantenimiento de sistema relacionadas con el software que tenemos instalado en la máquina, como por ejemplo ejecutar actualizaciones de seguridad. También podríamos realizar limpieza de archivos innecesarios como logs antiguos, cachés o copias que ya se han quedado obsoletas.

Sintaxis básica de Crontab

Vamos ahora a conocer la sintaxis del archivo crontab que es bastante particular. No es compleja de producir pero sí tenemos que ser muy precisos para indicar los momentos en el tiempo en los que se tienen que ejecutar las tareas.

Para empezar debemos de saber:

  • Cada línea en el archivo de Crontab representa una tarea a ejecutar
  • Cada línea está compuesta por cinco campos de tiempo seguidos del comando de terminal que se debe ejecutar en el tiempo definido por esos campos de tiempo.

Formato de los campos de tiempo

La parte más compleja son los cinco campos de tiempo que debemos indicar para que se pueda definir el instante en el que se debe ejecutar la tarea.

Estos cinco campos hacen que se señale de manera precisa el instante concreto de ejecución de la tarea. Estos campos están representados en la siguiente imagen por asteriscos:

  • El primer asterisco sirve para representar el minuto de ejecución.
  • El segundo para definir la hora
  • Tercero es el día del mes
  • Cuarto es el mes concreto, de enero a diciembre
  • Quinto es el día de la semana (este día de la semana puede ir desde 0 a 7. Siendo 0 el domingo, así como 7 también sería el domingo)

Además, podemos colocar un asterisco en vez de un valor numérico, en cuyo caso estaríamos indicando que sería cualquier valor posible.

Por ejemplo, cinco asteriscos «* * * * * » indicarían cualquier valor posible de minuto, hora, día, etc. Como resultado esa configuración ejecutaría la tarea cada minuto. Otro ejemplo, si colocamos «0 5 * * *» estaríamos indicando que la tarea se debe ejecutar todos los días a las 5:00 de la mañana.

Comandos y rutas que se pueden ejecutar

El comando que se especifica para ejecutar la tarea programada puede ser cualquier instrucción válida de las que lanzarías en el terminal. Esto incluye llamadas a programas de terminal pero también a scripts en bash con los que puedes personalizar procesos todo lo complicados que sea necesario, o incluso scripts en otros lenguajes de programación como Python o PHP.

Ejemplos comunes de crontabs

Lo mejor para poder aprender a manejar las tareas programadas de Crontab es ver algunos ejemplos que podrían ser representativos:

Si quisiéramos ejecutar un script bash cada día a las 3:30 de la mañana podríamos usar un comando como este::

30 3 * * * /home/usuario/scripts/backup.sh

Podemos ejecutar un comando al principio de cada hora (en el segundo 00) para limpiar la carpeta de archivos temporales:

0 * * * * rm -rf /tmp/*

También podríamos ejecutar archivos con código en otros lenguajes de programación. Por ejemplo, si queremos enviar un informe generado por una página PHP todos los lunes a las 8:30 podríamos escribir este cron.

30 8 * * 1 /usr/bin/php /var/www/reportes/enviar.php

Cómo editar y gestionar Crontab

Como has visto, definir tareas no representa demasiadas dificultades pero te preguntarás ¿Cómo debo abrir la tabla de planificaciones del Crontab? Es bastante sencillo a través del comando «crontab», que podemos llamar con varios modificadores para poder hacer operaciones diversas.

Comando crontab -e para editar

Con el comando «crontab -e» se abre el archivo crontab del usuario actual en el editor predeterminado, lo que nos permite añadir o modificar tareas programadas:

crontab -e

Ver tareas programadas con crontab -l

Si simplemente quieres ver las tareas que tu usuario tiene programadas actualmente, puedes ejecutar el siguiente comando:

crontab -l

Eliminar tareas con crontab -r

Por último tenemos el comando «crontab -r», que hace un borrado completo del archivo crontab del usuario actual.

crontab -r

Solo debes tener cuidado de ejecutar este comando cuando estés seguro que no tienes ninguna tarea que pueda ser importante para ti, ya que este comando eliminará todas las que existan sin pedirte ninguna confirmación.

Fernán García de Zúñiga

Productos relacionados: