Crontab en Linux: Tutorial de configuración paso a paso

El crontab en Linux es una herramienta que nos permite programar tareas para que se ejecuten de manera automática en un momento en el tiempo que especifiquemos. En este pequeño tutorial veremos el proceso de configuración del crontab, incluyendo ejemplos prácticos para activar varias configuraciones.

¿Qué es Crontab?

Crontab (acrónimo de cron table) es un archivo de texto que contiene una lista de comandos que serán ejecutados de forma repetitiva en aquel momento en el tiempo que definamos. Cron es un daemon que lee este archivo y ejecuta los comandos cuando el tiempo definido coincida con el momento actual.

El crontab es una herramienta estándar que se encuentra en la mayoría de las distribuciones de Linux, ya que es una parte integral del sistema para la automatización de tareas. A continuación, se enumeran algunas de las distribuciones de Linux más comunes en las que se puede encontrar crontab:

  1. Ubuntu: Una de las distribuciones más populares y amigables para el usuario, basada en Debian.
  2. Debian: Conocida por su estabilidad y su filosofía de software libre, es la base para muchas otras distribuciones, incluida Ubuntu.
  3. CentOS: Una distribución derivada de Red Hat Enterprise Linux (RHEL), enfocada en la estabilidad y la seguridad.
  4. Red Hat Enterprise Linux (RHEL): Orientada al mercado empresarial, ofrece soporte a largo plazo y es conocida por su robustez.
  5. Fedora: Patrocinada por Red Hat, es conocida por ser una plataforma para la innovación y la tecnología de vanguardia.
  6. Arch Linux: Conocida por su simplicidad y control total por parte del usuario, sigue la filosofía KISS (Keep It Simple, Stupid).
  7. openSUSE: Ofrece tanto una versión de lanzamiento continuo (Tumbleweed) como una de lanzamiento fijo (Leap), y es conocida por su herramienta de administración Yast.
  8. Linux Mint: Basada en Ubuntu y Debian, es popular por su facilidad de uso y su enfoque en la experiencia de escritorio.
  9. Manjaro: Basada en Arch Linux, busca ofrecer la potencia de Arch con una experiencia más amigable para el usuario.
  10. Alpine Linux: Una distribución ligera y segura, diseñada para mayor eficiencia y enfocada en la seguridad.

Instalación de Cron

En la mayoría de estas distribuciones, cron y crontab están preinstalados. Sin embargo, en algunas distribuciones minimalistas o específicas, es posible que necesites instalarlos manualmente. Aquí hay cómo hacerlo en algunas distribuciones populares:

En Debian, Ubuntu y derivadas:

sudo apt-get update
sudo apt-get install cron

En CentOS, RHEL y derivadas:

sudo yum update
sudo yum install cronie

En Fedora:

sudo dnf install cronie

En Arch Linux y derivadas:

sudo pacman -S cronie

Habilitar y Comprobar el Servicio de Cron

Después de instalar cron, asegúrate de que el servicio esté habilitado y funcionando:

sudo systemctl enable crond
sudo systemctl start crond
sudo systemctl status crond

Estos comandos aseguran que el servicio cron se inicie automáticamente en el arranque y verifican su estado actual.

Paso 1: Acceder al Crontab

Para empezar a editar tu crontab, abre un terminal y ejecuta el siguiente comando:

crontab -e

Si es la primera vez que lo usas, se te pedirá que elijas un editor de texto. Selecciona tu preferido (nano, vim, etc.).

Paso 2: Entender la Sintaxis del Crontab

Cada línea en un crontab sigue esta estructura:

* * * * * comando

Donde cada asterisco representa una unidad de tiempo:

  • Minutos (0-59)
  • Hora (0-23)
  • Día del mes (1-31)
  • Mes (1-12)
  • Día de la semana (0-7) (donde 0 y 7 representan el domingo)

Paso 3: Ejemplos de Configuraciones

Ejemplo 1: Ejecutar un script cada día a las 4:30 de la madrugada

Supongamos que tienes un script ubicado en /home/usuario/scripts/backup.sh que realiza una tarea de backup y quieres ejecutarlo todos los días a las 4:30 AM. Añade la siguiente línea a tu crontab:

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

Ejemplo 2: Borrar archivos temporales cada semana

Para limpiar los archivos temporales cada domingo a la medianoche:

0 0 * * 0 /usr/bin/find /tmp -type f -atime +7 -delete

Ejemplo 3: Sincronizar el reloj del sistema cada hora

Si deseas sincronizar el reloj del sistema cada hora:

0 * * * * /usr/sbin/ntpdate -s time.nist.gov

Ejemplo 4: Ejecutar múltiples tareas

Puedes tener múltiples tareas en tu fichero de crontab. Por ejemplo:

0 8 * * 1-5 /home/usuario/scripts/stats.sh  # Informe enviado a las 8:00 de la mañana entre semana
30 1 * * * /home/usuario/scripts/backup.sh  # Backup todos los días a la 1:30 de la madrugada

#TAREAS DE SERVIDOR
0 4 1 * * /home/usuario/scripts/maintenance.sh  # Mantenimiento mensual el primer día de cada mes a las 04:00

La almohadilla (#) se utiliza para realizar comentarios en el fichero que serán ignorados por el cron, así tanto una línea que comienza por almohadilla como a partir de donde se coloque, será ignorado.

Paso 4: Guardar y Salir

Una vez que hayas añadido tus tareas, guarda el archivo y cierra el editor. El daemon cron automáticamente recargará el crontab y ejecutará las tareas según lo programado.

Paso 5: Verificar el Crontab

Para verificar que tu crontab se ha guardado correctamente, puedes listar las tareas programadas con, se mostrará la configuración completa:

crontab -l

Consideraciones Adicionales

  • Logs de Cron: Los registros de las tareas cron generalmente se encuentran en /var/log/syslog o /var/log/cron. Revisa estos archivos de log para solucionar problemas si tus tareas no se ejecutan como esperas.
  • Permisos: Asegúrate de que los scripts que llamas desde el crontab tienen los permisos de ejecución correctos y están en la ruta que has definido.

Configurar el crontab en Linux es una tarea esencial para automatizar procesos y mantener la eficiencia del sistema. Siguiendo estos pasos, puedes programar tus tareas de manera efectiva y asegurarte de que se ejecuten puntualmente.


Espero que este pequeño tutorial te haya sido de utilidad. Si tienes alguna pregunta o comentario, no dudes en dejarlo abajo en los comentarios.

Bola extra: Listar los crontab de todos los usuarios

A veces necesitamos saber que usuario ha programado una tarea en el crontab, pero no sabemos que usuario puede ser. Existen varias maneras de listar todos los crontab de todos los usuarios de nuestro servidor, una sería:

#En sistemas RHEL, Centos y derivados
cat /var/spool/cron/*
#En sistemas Debian y derivados
cat /var/spool/cron/crontabs/*

Otro modo, que resulta más sencillo es lanzar en línea de comandos una petición para que liste el crontab de cada usuario en el fichero passwd:

for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *