Cron: Definición y guía para programar tareas en Unix y Linux

Aprende Cron: guía práctica para programar tareas en Unix/Linux, automatizar mantenimiento, backups y descargas con crontab paso a paso.

Autor: Leandro Alegsa

Cron es un programa informático que puede utilizarse para que un ordenador realice tareas en intervalos de tiempo específicos. Se utiliza en los sistemas operativos UNIX y en los sistemas operativos similares a UNIX, como Linux.

Cron puede utilizarse para programar la mayoría de las tareas repetitivas. A menudo se utiliza para automatizar tareas relacionadas con el mantenimiento o la administración de un ordenador o una red informática, aunque puede utilizarse para muchas otras tareas como la descarga de archivos de Internet y la descarga de correo electrónico en horas o fechas específicas.

El nombre del programa informático cron proviene de la palabra cron, que viene del griego para tiempo, χρόνος (chronos).

Cron se configura editando un archivo llamado crontab (tabla cron). Este archivo enumera las tareas específicas que debe ejecutar el ordenador y cuándo deben ejecutarse.

Cómo funciona y dónde se configura

Cron es un demonio que permanece en segundo plano y comprueba periódicamente los archivos crontab para ejecutar las órdenes programadas. Existen distintos lugares donde pueden definirse tareas:

  • Crontabs por usuario: editables con crontab -e. Cada usuario puede tener su propio crontab.
  • Crontab del sistema: /etc/crontab, que incluye un campo adicional para indicar el usuario que ejecutará la tarea.
  • Directorios especiales: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly y /etc/cron.d (este último permite archivos con formato similar a /etc/crontab).

Sintaxis de una línea de crontab

Una entrada típica en un crontab de usuario tiene este formato:

MIN HOUR DOM MON DOW command 
  • MIN — minuto (0-59)
  • HOUR — hora (0-23)
  • DOM — día del mes (1-31)
  • MON — mes (1-12 o nombres abreviados como Jan)
  • DOW — día de la semana (0-7, donde 0 y 7 son domingo, o nombres como Mon)
  • command — comando o script a ejecutar (use rutas absolutas)

Se admiten caracteres especiales:

  • * — cualquier valor
  • , — lista de valores (por ejemplo, 1,15)
  • - — rango (por ejemplo, 1-5)
  • / — paso (por ejemplo, */10 para cada 10 unidades)

Ejemplos prácticos

  • Ejecutar un script cada día a las 2:30:
    30 2 * * * /usr/local/bin/backup.sh
  • Limpiar un directorio cada hora a los minutos 0, 15, 30 y 45:
    0,15,30,45 * * * * /usr/bin/cleanup.sh
  • Ejecutar un comando cada 5 minutos:
    */5 * * * * /usr/bin/check_status
  • Ejecutar al reiniciar la máquina (en muchas implementaciones):
    @reboot /usr/local/bin/startup_task.sh
  • Algunos alias útiles (disponibles en muchas versiones de cron): @daily, @weekly, @monthly, @hourly, @yearly.

Editar y gestionar crontabs

  • Editar el crontab del usuario actual: crontab -e (abre el editor por defecto).
  • Listar el crontab del usuario: crontab -l.
  • Eliminar el crontab del usuario: crontab -r.
  • Ver logs de ejecución: en muchos sistemas /var/log/cron o /var/log/syslog. Con systemd: journalctl -u cron o journalctl -u crond.
  • Control del servicio cron: systemctl status cron, systemctl start cron, systemctl enable cron (o usar service en sistemas sin systemd).

Buenas prácticas y consideraciones

  • Use rutas absolutas en comandos y scripts (por ejemplo, /usr/bin/python3) y declare variables de entorno si su script depende de ellas.
  • Defina al principio del crontab variables como PATH, SHELL o MAILTO para controlar el entorno de ejecución y recibir notificaciones:
    [email protected] PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
  • Redireccione salidas para evitar correos innecesarios: /ruta/script.sh >/var/log/script.log 2>&1.
  • Asegúrese de que los scripts sean ejecutables (chmod +x script.sh) y tengan la línea shebang adecuada (#!/bin/bash).
  • Probar manualmente el comando desde la cuenta de usuario antes de programarlo en cron para verificar que funciona en el entorno de cron.
  • Evite solapar tareas largas; use mecanismos de bloqueo (flock) si es necesario para prevenir ejecuciones concurrentes.
  • Restrinja el uso de cron por seguridad: no ejecute comandos con permisos elevados (root) salvo que sea imprescindible.

Cron vs. anacron y systemd timers

Si un equipo no está encendido permanentemente (por ejemplo, portátiles), las tareas programadas con cron pueden no ejecutarse en el momento esperado. Para estos casos existe anacron, que garantiza la ejecución de tareas periódicas cuando la máquina vuelve a estar activa. En sistemas con systemd también puede usarse systemd timers como alternativa moderna a cron, con mayor integración con el gestor de servicios y control de dependencias y temporización.

Problemas comunes y solución

  • La tarea no se ejecuta: verificar sintaxis, permisos, rutas absolutas y logs del sistema.
  • Variables de entorno diferentes: definir PATH y otras variables en el crontab o en el script.
  • Zona horaria: cron usa la zona horaria del sistema; si necesita otra zona, considere ajustar TZ o usar systemd timers que soportan CRON_TZ en algunos casos.

Con estos conceptos y buenas prácticas podrá programar y mantener tareas periódicas en sistemas UNIX y Linux de forma segura y fiable.

Preguntas y respuestas

P: ¿Qué es Cron?


R: Cron es un programa informático utilizado para programar tareas a intervalos de tiempo específicos.

P: ¿Dónde se utiliza Cron?


R: Cron se utiliza en sistemas operativos UNIX y sistemas operativos similares a UNIX, como Linux.

P: ¿Qué tipo de tareas se pueden programar con Cron?


R: La mayoría de las tareas repetitivas se pueden programar con Cron. A menudo se utiliza para automatizar tareas relacionadas con el mantenimiento o la administración de un ordenador o una red informática, aunque puede utilizarse para muchas otras tareas, como descargar archivos de Internet y descargar correo electrónico en horas o fechas específicas.

P: ¿De dónde procede el nombre Cron?


R: El nombre del programa informático Cron procede de la palabra cron, que a su vez proviene de la palabra griega para tiempo, χρόνος (chronos).

P: ¿Cómo se configura Cron?


R: Cron se configura editando un archivo llamado crontab (tabla cron). Este archivo enumera las tareas específicas para que el ordenador las ejecute y cuándo deben ejecutarse.

P: ¿Qué es un crontab?


R: Una crontab es un archivo que enumera las tareas específicas que debe ejecutar el ordenador y cuándo deben ejecutarse.

P: ¿Para qué tipo de tareas repetitivas puede utilizarse Cron?


R: La mayoría de las tareas repetitivas relacionadas con el mantenimiento o la administración de un ordenador o una red informática pueden automatizarse con Cron. También se puede utilizar para muchas otras tareas como la descarga de archivos de Internet y la descarga de correo electrónico en horas o fechas específicas.


Buscar dentro de la enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3