Aloje su propio agente de IA con OpenClaw: instalación gratuita en un solo clic!

Sintaxis de Crontab en Linux: Una guía práctica para 2026

Sintaxis de Crontab en Linux: Una guía práctica para 2026

Tienes un script de copia de seguridad. Funciona cuando lo ejecutas manualmente. Ahora necesitas que se ejecute a las 2:00 cada noche sin que tengas que supervisar el terminal. Ahí es donde entra cron, y dominar la sintaxis de crontab es la diferencia entre un script que se ejecuta según lo programado y uno que silenciosamente no hace nada mientras duermes.

Esta guía cubre todo lo que necesitas: el formato de crontab y los valores de sus campos, los caracteres especiales que hacen que la programación sea flexible, los pocos comandos de crontab que realmente usarás y ejemplos reales que puedes copiar y modificar. Sin contenido innecesario, sin rodeos.

Qué es Crontab y un trabajo Cron

Hay tres términos que a menudo se usan indistintamente cuando no deberían.

El daemon de cron (crond) es el proceso en segundo plano que se activa cada minuto, comprueba si hay tareas programadas y ejecuta las que correspondan. Lleva haciéndolo en sistemas Unix desde la década de 1970 y no interactúas directamente con él.

Un trabajo cron es cualquier tarea que has programado mediante cron. Una copia de seguridad de la base de datos a medianoche, una rotación de registros los domingos, una comprobación de estado cada cinco minutos. Cada uno es un trabajo cron.

Crontab (abreviatura de «tabla cron») es el archivo donde viven esos trabajos. Una línea por trabajo. Cada línea indica al daemon de cron exactamente cuándo ejecutar un comando y qué comando ejecutar.

Qué es la Sintaxis de Crontab

La sintaxis de crontab es el formato estructurado que se utiliza para definir cuándo debe ejecutarse un trabajo cron. Cada línea en el archivo de crontab sigue el mismo patrón: cinco campos de tiempo/fecha, luego el comando. El daemon de cron lee estas líneas, analiza los campos y los compara con la hora actual del sistema una vez por minuto. Si la sintaxis es incorrecta, no sucede nada: sin error, sin advertencia, solo silencio.

Formato de Crontab y Valores de Campo

Cada entrada de crontab utiliza cinco campos antes del comando. Siempre aparecen en este orden:

CampoValores Permitidos
Minuto0-59
Hora0-23
Día del mes1-31
Mes1-12
Día de la semana0-6 (0 = Domingo; en algunos sistemas, 7 también significa Domingo)
ComandoEl comando de shell a ejecutar

Los cinco campos son obligatorios. Si no se necesita un campo en particular, debe rellenarse con un asterisco (*). Dejar un campo en blanco rompe la entrada sin que cron lo indique.

Caracteres Especiales de Crontab Explicados

Los valores numéricos simples tienen un alcance limitado. Estos caracteres especiales dotan a las expresiones cron de la flexibilidad necesaria para cubrir necesidades reales de programación:

SímboloQué HaceEjemplo
* (asterisco)Coincide con todos los valores posibles para ese campo* en el campo de la hora = ejecutar cada hora
, (coma)Separa una lista de valores específicos1,3,5 en día de la semana = Lun, Mié, Vie
- (guion)Define un rango de valores consecutivos9-17 en el campo de la hora = 9 AM hasta 5 PM
/ (barra diagonal)Establece un valor/intervalo de paso*/10 en el campo de minutos = cada 10 minutos
LÚltimo día del mes o último día específico de la semana1L en día de la semana = último lunes del mes
WDía laboral más cercano al día dado15W en día del mes = día laboral más cercano al 15
# (numeral)Enésima ocurrencia de un día laboral en el mes2#3 = tercer martes del mes
? (signo de interrogación)Sin valor específico; usado en los campos de día? en día del mes = cualquier día

Nota rápida: L, W, #, y ? no son soportados por todas las implementaciones de cron. El crontab estándar de Linux (Vixie cron) no los reconoce. Los encontraras en programadores basados en Quartz y en algunas variantes extendidas de cron. Usa *, comas, guiones y barras si quieres una sintaxis portátil.

Comandos Esenciales de Crontab

Solo necesitas cuatro comandos de crontab. Estos cuatro cubren el 99 % de los casos de uso: editar, listar y, ocasionalmente, eliminar.

  • crontab -e Abre el archivo de crontab para editarlo. Si no existe, crea uno nuevo. La primera vez, preguntará qué editor de texto prefieres.
  • crontab -l Lista todas las entradas actuales de crontab. Úsalo para verificar lo que está programado, ya que las suposiciones son la principal causa de fallos a las 3:00.
  • crontab -r Elimina el archivo de crontab completo — no una sola entrada, sino el archivo completo, sin aviso de confirmación.
  • crontab -ri hace lo mismo que -r pero solicita confirmación. Utiliza siempre esta opción.

Eso cubre el 99% de lo que harás. Editar, listar y ocasionalmente eliminar.

Cómo Usar Crontab con Ejemplos

Con la teoría cubierta, construyamos entradas de crontab reales. Abre el archivo de crontab:

crontab -e

Si es la primera vez, el sistema pedirá que elijas un editor. Se recomienda nano si se busca la opción más sencilla. Se abrirá un archivo de texto donde cada nueva línea define un nuevo trabajo cron.

Nota importante: crontab utiliza la zona horaria del sistema. Si el servidor está configurado en UTC y se programa para las «9:00», eso es 9:00 UTC, no la hora local. Comprueba con timedatectl si hay dudas.

Programar un trabajo Cron a una hora específica

Por ejemplo, para ejecutar un script de shell el 10 de junio a las 8:30:

30 08 10 06 * /home/user/superbackup.sh

Minuto 30, hora 08, día 10, mes 06, cualquier día de la semana. El asterisco en el campo de día de la semana indica «sin restricción de día».

Ver entradas de Crontab con crontab -l

Para ver lo que ya está programado, ejecuta:

crontab -l

Este comando muestra cada línea del archivo crontab en la terminal. Si la salida está vacía, no hay trabajos cron configurados.

Editar entradas de Crontab

Para modificar un horario o corregir una ruta, se usa el mismo comando que para crearlo:

crontab -e

Localiza la línea, edítala, guarda y sal. El daemon de cron detecta los cambios automáticamente, sin necesidad de reiniciar.

Ejecuta un trabajo cron cada minuto

Cinco asteriscos seguidos del comando: ese es el patrón para ejecución cada minuto:

* * * * * /home/user/systemhealthcheck.sh

Este comando se ejecuta una vez por minuto, a todas horas, todos los días. Úsalo para scripts de monitorización o comprobaciones rápidas. Evita usarlo para tareas pesadas, ya que podría saturar el servidor.

Programar un trabajo cron diario

El atajo @daily ejecuta un comando una vez al día a la medianoche (00:00):

@daily /home/user/systemcleanup.sh

Es más conciso que escribir 0 0 * * * y equivale a lo mismo. También hay @weekly (domingo a medianoche), @hourly (minuto 0 de cada hora) y @annually (1 de enero a medianoche).

Programar un trabajo cron para un rango de tiempo

Para ejecutar un script solo durante el horario laboral, utiliza un guion en el campo de la hora:

00 08-17 * * * /home/user/sync.sh

Esto se ejecuta al inicio de cada hora de 8:00 a 17:00, todos los días. Para restringirlo a los fines de semana, añade un rango de días de la semana:

00 08-17 * * 6-0 /home/user/sync.sh

Ahora se ejecuta solo el sábado (6) hasta el domingo (0).

Horarios de cron mensuales y anuales

El atajo @monthly ejecuta un trabajo a la medianoche del día 1 de cada mes:

@monthly /home/user/monthlyreport.sh

Equivalente a 0 0 1 * *. Y @yearly (o @annually) se ejecuta el 1 de enero a medianoche. Útil para renovaciones de certificados, archivos de registros anuales o cualquier tarea que deba ejecutarse exactamente una vez al año.

Ejecutar un trabajo cron varias veces al día

Los valores separados por comas permiten alcanzar múltiples horarios específicos. Cinco veces al día: a las 12:00, 15:00, 17:00, 19:00 y 21:00:

0 12,15,17,19,21 * * * /home/user/report.sh

Cada valor en el campo de hora actúa como un disparador independiente. El campo de minutos es 0, por lo que se ejecuta al inicio de cada una de esas horas.

Ejecutar un comando después del reinicio del sistema

La directiva @reboot ejecuta un comando una sola vez, justo después de que el sistema arranca:

@reboot /home/user/startservices.sh

Útil para iniciar daemons en segundo plano, restablecer túneles SSH o arrancar agentes de monitorización que no tienen archivos de servicio systemd. Solo se ejecuta al iniciar el sistema, no cuando se reinicia el daemon de cron.

Ubicación del archivo Crontab en Linux

La ubicación de los archivos crontab depende del sistema operativo:

  • Debian/Ubuntu/var/spool/cron/crontabs/
  • Red Hat/CentOS/Fedora/var/spool/cron/
  • macOS/var/at/tabs/

Puedes consultarlos directamente, pero editarlos a mano omite la verificación de sintaxis de cron. Es preferible usar crontab -e.

Configuración adicional de Crontab

Lo básico maneja la mayoría de los casos de uso. Pero cuando los trabajos cron empiecen a multiplicarse, conviene configurar el registro, controlar las notificaciones por correo y definir correctamente el entorno.

Crea un archivo de registro de crontab

Por defecto, la salida de los trabajos cron se descarta a menos que se capture. Para redirigir stdout y stderr a un archivo de registro:

* * * * * /home/user/script.sh >> /var/log/cronjob.log 2>&1

El >> añade en lugar de sobrescribir, manteniendo así un historial. El 2>&1 envía los mensajes de error al mismo archivo que la salida estándar. Sin esto, el script puede fallar silenciosamente durante semanas sin que se detecte hasta que algo dependiente deje de funcionar.

Desactivar las notificaciones por correo electrónico de Crontab

Cron envía un correo electrónico al usuario por cada trabajo que produce salida. En un sistema con alta actividad, esto genera un volumen considerable de correo local que nadie lee. Para suprimirlo, añade:

>/dev/null 2>&1

Añade esto al final de cualquier línea de trabajo cron. Envía tanto stdout como stderr a /dev/null. Asegúrate de tener configurado el registro por separado, o el sistema operará sin visibilidad.

Variables de entorno de Crontab

Cron no carga el perfil de shell, lo que significa que PATH, SHELL y otras variables de entorno son mínimas por defecto. Es recomendable definirlas al inicio del archivo crontab:

  • PATH – indica a cron dónde encontrar ejecutables. El valor predeterminado suele ser /usr/bin:/bin, por lo que los scripts en /usr/local/bin pueden fallar inesperadamente.
  • SHELL – define qué shell utiliza cron. Por defecto es /bin/sh, no bash. Si los scripts utilizan características de bash, establece este valor en /bin/bash.
  • LOGNAME – nombre de usuario propietario del crontab, obtenido de /etc/passwd.
  • HOME – directorio de inicio del propietario del crontab, también obtenido de /etc/passwd.

Defínelas como cualquier variable de shell al inicio del crontab, antes de las entradas de trabajo:

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
* * * * * /home/user/script.sh

Esta es la razón más frecuente por la que los trabajos cron funcionan de forma interactiva pero fallan cuando se programan. Comprueba siempre el PATH en primer lugar.

Scroll al inicio