¿Quieres despertarte a las 2 a.m., limpiar los registros, eliminar archivos temporales y ejecutar las mismas tareas de mantenimiento del servidor todos los días?
Pues, yo tampoco. Ni los millones de administradores de servidores que gestionan los más de 14 mil millones de servidores en todo el mundo.
Así que, ¡detén la locura, te lo suplico!
Los cron jobs están hechos para eso.
Porque, sinceramente, nada dice “administrador de sistemas competente” como estar profundamente dormido y recibir crédito por el trabajo que tus scripts hacen por ti. Se llama “utilizar tus recursos”.
Con cron jobs:
- Tu jefe piensa que eres dedicado.
- Tu servidor sabe que eres perezoso.
- Tienes una hermosa relación simbiótica llamada automatización.
Hoy, vas a convertirte en un experto en cron jobs.
Primero, ¿Qué es un Cron Job? (La Versión No Aburrida)
Un cron job es esencialmente un programador de tareas integrado en sistemas operativos similares a Unix (Linux, macOS) que te permite ejecutar comandos de Linux automáticamente en momentos y fechas especificadas.
Piénsalo como una lista de tareas para tu servidor, pero… esta realmente se completa.
Cron en Metáforas
Si tu infraestructura de servidor fuera un restaurante:
- El cron daemon es el gerente que revisa el horario diario.
- El crontab es la pizarra de asignaciones del personal.
- Cada cron job es una tarea asignada a un miembro del personal en un momento específico.
- El comando es el trabajo real que se está realizando.
Cuando el reloj marca la hora programada, el gerente toca al empleado asignado en el hombro y le dice: “¡Es hora de actuar!”
El empleado luego ejecuta su tarea sin preguntas ni quejas.
¡Si tan solo los humanos fuéramos tan confiables, el mundo sería un lugar diferente!
La Anatomía de un Cron Job
Cada cron job consta de dos partes principales:
- Cuándo ejecutar (el horario)
- Qué ejecutar (el comando o script a ejecutar)
El horario utiliza una sintaxis específica que, a primera vista, puede parecer algo de magia computacional:

Pero mira más de cerca y comenzará a tener sentido.
Cada asterisco puede ser reemplazado por valores específicos, rangos o intervalos para crear exactamente el horario que necesitas.
Por Qué a Los Administradores de Servidores Aman los Cron Jobs
Hay una razón por la que los administradores de servidores (incluso yo) se emocionan al hablar de los cron jobs.
Convierten la administración del servidor en algo que (al menos remotamente) se asemeja al equilibrio entre el trabajo y la vida personal.
1. Te Ahorran Tiempo
¿Recuerdas el tiempo? Ese recurso del que nunca tienes suficiente. Los cron jobs te lo devuelven. Los configuras, los olvidas y prácticamente nunca los miras.
(Bueno, hasta que se rompen o necesitas cambiar el horario.)
2. Mantienen la Consistencia
Los humanos somos inconsistentes. Olvidamos cosas. Cometemos errores tipográficos. Nos distraemos con videos de gatos. Los cron jobs realizan la misma tarea, de la misma manera, cada vez — sin excepciones.
3. Tu Servidor Nunca Duerme
Con los cron jobs, el mantenimiento esencial ocurre 24/7/365, ya sea que estés despierto, dormido o en la playa tomando margaritas.
4. Los Registros de Errores > La Memoria Humana
Cuando realizas tareas manualmente, ¿puedes recordar exactamente qué hiciste y cuándo lo hiciste? Probablemente no.
Pero los cron jobs pueden configurarse para registrar su actividad, creando un rastro de papel de todas las acciones automatizadas para la solución de problemas y verificación.
5. Están Diseñados para Escalar
A medida que tu infraestructura crece, gestionar todo manualmente se vuelve exponencialmente más difícil. Los cron jobs escalan sin esfuerzo.
Es decir, el mismo trabajo puede ejecutarse en múltiples servidores sin requerir tiempo adicional de tu parte.
Configurar Cron Jobs: Guía Paso a Paso
¡Suficiente teoría! Necesitas ensuciarte las manos con una configuración práctica de cron jobs.
Paso 1: Confirmar que Cron Está Instalado
La mayoría de los sistemas similares a Unix ya tienen cron preinstalado. Para verificar si está disponible para su uso, escribe el siguiente comando:
crontab -e |
Dependiendo del editor predeterminado, el comando abrirá el crontab en tu editor específico. Si nunca has usado crontab antes, es posible que te pida que configures el editor predeterminado.

Si el terminal responde con “command not found“, necesitarás instalar cron con los siguientes comandos:
- On Ubuntu/Debian: sudo apt update && sudo apt install cron
- On CentOS/RHEL: sudo yum install cronie
Una vez hecho esto, inicia y habilita el servicio cron:
sudo systemctl start cronsudo systemctl enable cron |
Con los comandos de start y enable, estamos iniciando el servicio cron para ejecutar los cron jobs.
Y con “enable“, nos aseguramos de que, incluso si tu servidor se reinicia, el servicio cron se reinicie automáticamente con él, y no se pierdan cron jobs.
Nota para geeks: CentOS llama al servicio cron “crond”, por lo que necesitarás iniciar y habilitar el servicio crond.
Paso 2: Entendiendo el Crontab
Muy bien, abre el crontab o la tabla de cron para comenzar a agregar tus trabajos programados.
Cada usuario en el sistema puede tener su propio archivo crontab. Además, existe un crontab a nivel de sistema.
Para editar tu crontab personal:
crontab -e |
Esto abrirá tu archivo crontab en el editor de texto predeterminado. Si es tu primera vez, elige el editor nano (opción 1), ya que es el más fácil para principiantes.
Para crontabs a nivel de sistema, ejecuta el siguiente comando con privilegios de sudo:
sudo nano /etc/crontab |

Paso 3: Sintaxis del Cron Job
Ya hemos hablado sobre la estructura básica en la anatomía de los cron jobs antes.
Pero crear un cron job puede ser confuso a veces. Crontab.guru te ayuda a visualizar los horarios de los trabajos a medida que los escribes.

Ahora vamos a lo divertido: escribir nuestro primer cron job. Echemos un vistazo a algunos horarios comunes de cron jobs:
Cada minuto:
* * * * * /path/to/command |
Cada hora en el minuto 0:
0 * * * * /path/to/command |
Cada día a la medianoche:
0 0 * * * /path/to/command |
Cada lunes a las 3 a.m.:
0 3 * * 1 /path/to/command |
Cada 15 minutos:
*/15 * * * * /path/to/command |
El primer día de cada mes a las 6:30 a.m.:
30 6 1 * * /path/to/command |
Paso 4: Crear tu Primer Cron Job
Pasemos a crear un cron job simple para hacer copias de seguridad de tu servidor.
La siguiente tarea crea una copia de seguridad de tu sitio web todos los días a las 2 a.m.:
0 2 * * * tar -czf /path/to/backup/website-backup-$(date +%Y%m%d).tar.gz /path/to/your/website |
Esto generará un archivo tar comprimido de tu directorio de sitio web con la fecha actual como nombre de archivo.
Paso 5: Guardar y Verificar
Ahora, sal del editor. En nano, presiona Ctrl+X y luego presiona Y.
Para ver tu crontab actual y verificar que tu trabajo fue agregado:
crontab -l |

¡Eso es todo! Tu primer cron job ya está configurado y se ejecutará automáticamente en el horario programado.
Ejemplos Prácticos de Cron Jobs para Administradores de Sitios Web
Ahora que conoces lo básico, exploremos algunos cron jobs prácticos que pueden hacer tu vida como administrador de sitios web significativamente más fácil.
Copia de Seguridad de Base de Datos
Copia de seguridad de la base de datos MySQL (diariamente a la 1 a.m.):
0 1 * * * mysqldump -u username -p’password’ database_name | gzip > /path/to/backups/db-backup-$(date +%Y%m%d).sql.gz |
Rotación y Limpieza de Registros
Limpiar los registros que tengan más de 7 días (semanalmente los domingos):
0 0 * * 0 find /path/to/logs -type f -name “*.log” -mtime +7 -delete |
Monitoreo de Rendimiento del Sitio Web
Comprobar el tiempo de respuesta del sitio web cada 5 minutos:
*/5 * * * * curl -o /dev/null -s -w “%{http_code} %{time_total}sn” example.com >> /path/to/logs/website-performance.log |
Actualizaciones de Contenido
Obtener y actualizar contenido dinámico (cada hora):
0 * * * * /path/to/content-update-script.sh |
Informes por Correo Electrónico
Enviar un resumen semanal de tráfico todos los lunes a las 9 a.m.:
0 9 * * 1 /path/to/generate-and-email-report.sh |
Escaneos de Seguridad
Ejecutar un script de escaneo de seguridad todas las noches a las 3 a.m.:
0 3 * * * /path/to/security-scan.sh |
Mejores Prácticas de Cron Jobs: Qué Hacer y Qué No Hacer
Para asegurarte de que tus cron jobs se ejecuten sin problemas y no causen más problemas de los que resuelven, aquí tienes algunas prácticas recomendadas importantes.
Qué Hacer
- Siempre usa rutas completas para los comandos y archivos: Tu entorno de cron no tiene el mismo PATH que tu shell de usuario, así que “/usr/bin/python” es mejor que solo python.
- Redirige la salida para evitar el spam de correos electrónicos: Por defecto, cron envía cualquier salida por correo electrónico al usuario. Añade >/dev/null 2>&1 para suprimir la salida o redirigirla a un archivo de registro.
- Prueba tus comandos antes de programarlos: Ejecuta tu comando manualmente para asegurarte de que funciona como se espera.
Añade comentarios para explicar cada tarea — Tu futuro yo te lo agradecerá por documentar lo que hace cada cron job y por qué.
# Daily database backup – Added by Jane on 2023-05-15 0 1 * * * /path/to/backup-script.sh |
Considera usar archivos de bloqueo para trabajos de larga duración para evitar que una nueva instancia se inicie si la anterior aún está en ejecución.
0 * * * * flock -n /tmp/script.lock /path/to/your/script.sh |
Lo que No Debes Hacer
- No programes trabajos intensivos en recursos durante las horas pico: Tu copia de seguridad no necesita ejecutarse al mediodía cuando tu sitio está más ocupado.
- No uses rutas relativas: “./script.sh” casi seguramente fallará en cron.
- No olvides las variables de entorno: Cron no carga tu .bashrc ni .profile. Establece las variables necesarias en el crontab o en el script.
- No pases por alto los registros: Sin un registro adecuado, depurar cron jobs puede ser una pesadilla.
- No te excedas: Demasiados cron jobs frecuentes pueden sobrecargar tu servidor. Sé estratégico.
Qué Hacer Cuando los Cron Jobs No Funcionan
La única vez que debes revisar un cron job es cuando falla — y cuando falla, aquí te explicamos cómo diagnosticar y solucionar problemas comunes.
Problema Común #1: El Trabajo No Se Ejecuta
Síntomas: Tu tarea programada parece no ejecutarse en absoluto.
Posibles soluciones:
- Verifica que el demonio de cron esté en ejecución: El estado de “systemctl” cron
- Verifica la sintaxis de tu crontab: Usa una herramienta como crontab.guru
- Asegúrate de usar rutas completas para los ejecutables: ¿Qué comando usar para encontrar rutas completas?
- Verifica los permisos de los archivos: Los scripts deben ser ejecutables (chmod +x script.sh)
Problema Común #2: El Trabajo Se Ejecuta Pero Falla
Síntomas: El trabajo se ejecuta, pero no completa su tarea correctamente.
Posibles soluciones:
- Redirige la salida a un archivo de registro para ver los errores:
* * * * * /path/to/script.sh > /path/to/script.log 2>&1 |
- Prueba el comando manualmente con el mismo entorno.
- Verifica las dependencias que podrían faltar en el entorno de cron.
Problema Común #3: Inundación de Correos Electrónicos
Síntomas: Tu bandeja de entrada está inundada con correos electrónicos de salida de cron.
Posibles soluciones:
- Redirige la salida a null: >/dev/null 2>&1
- Redirige a un archivo de registro: >/path/to/logfile.log 2>&1
Solo envía correos electrónicos en caso de errores:
* * * * * /path/to/script.sh >/dev/null || echo “Script failed” | mail -s “Cron failure” [email protected] |
Problema Común #4: Problemas de Tiempo
Síntomas: Los trabajos se ejecutan en momentos o frecuencias inesperadas.
Posibles soluciones:
- Verifica nuevamente la configuración de tu zona horaria — la fecha frente a la expectativa de cron.
- Ten en cuenta los cambios de horario de verano que pueden afectar el tiempo.
- Usa marcos de tiempo explícitos en lugar de relativos cuando la precisión sea importante.
Técnicas Avanzadas de Escritura de Cron Jobs
Hemos cubierto lo básico, y ahora ya eres prácticamente un experto en cron jobs. Pero esta sección te llevará un paso más allá.
Usando Cadenas Especiales
No siempre necesitas escribir cron jobs con esos signos de asterisco. Hay algunas cadenas especiales que te permiten configurar cron jobs de manera muy sencilla.
- @yearly o @annually: Ejecutar una vez al año (0 0 1 1 *)
- @monthly: Ejecutar una vez al mes (0 0 1 * *)
- @weekly: Ejecutar una vez a la semana (0 0 * * 0)
- @daily o @midnight: Ejecutar una vez al día (0 0 * * *)
- @hourly: Ejecutar una vez por hora (0 * * * *)
- @reboot: Ejecutar una vez al arrancar
Por ejemplo, si quieres que algo se ejecute diariamente, solo escribe el siguiente comando:
@daily /ruta/al/script-de-respaldo-diario.sh
Variables de Entorno en Crontab
Para evitar repetir una cadena una y otra vez en tus cron jobs (por ejemplo, una ruta específica o tu correo electrónico de administrador), configura variables de entorno al principio de tu crontab.
Luego, puedes reutilizar las variables según sea necesario dentro de tus scripts o comandos.
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [email protected] # This job will send errors to [email protected] 0 2 * * * /path/to/mailing_script.sh |
Si usamos la variable de entorno MAILTO en nuestro script-de-correo.sh, el script enviará automáticamente un correo electrónico a la dirección de correo correcta.
Con esto, cambiar el correo del administrador solo requerirá cambiar el valor de la variable MAILTO, en lugar de hacer cambios en todos los scripts.
Ejecutando Trabajos Como Diferentes Usuarios
Si tienes acceso de superusuario, puedes editar el crontab de otro usuario:
sudo crontab -u username -e |
Usando Anacron para Máquinas que No Están Siempre Encendidas
A diferencia de cron, anacron asegura que los trabajos se ejecuten incluso si la computadora estaba apagada durante la hora programada:
sudo apt install anacron
Edita /etc/anacrontab para agregar trabajos que se ejecutarán cuando el sistema vuelva a estar en línea.
Encadenamiento de Trabajos para Flujos de Trabajo Complejos
Ejecutar trabajos en secuencia:
0 1 * * * /path/to/first-script.sh && /path/to/second-script.sh |
Monitoreo de Cron Jobs
Para una gestión seria de servidores, considera herramientas como Cronitor, que proporcionan monitoreo y alertas para tus cron jobs.
0 * * * * cronitor exec check-12345 — /path/to/your/script.sh |
Hablemos de Costos
Los cron jobs no pueden existir en aislamiento. Necesitan un servidor y un servicio ejecutándose en un servidor que necesitas gestionar.
Ahora, si estás leyendo este artículo, es muy probable que tengas un servidor para tu sitio web o aplicación.
De hecho, si estás alojado con DreamHost VPS o cualquier proveedor de hosting basado en Linux, ya tienes todo lo necesario para comenzar a automatizar tus tareas de gestión de servidor.
Si no, un VPS de $10 USD/mes es todo lo que necesitarías, especialmente cuando estás comenzando.
Para aquellos que ya están ejecutando un DreamHost VPS, el proceso no podría ser más sencillo:
- Conéctate a tu servidor mediante SSH.
- Ejecuta crontab -e para editar tu tabla de cron personal.
- Agrega tus tareas programadas.
- Guarda y deja que la automatización comience.
SSH
Secure Shell Protocol (SSH) es un protocolo criptográfico de red para ejecutar servicios de manera segura a través de una red no segura. Se usa principalmente para ejecuciones de línea de comandos e inicios de sesión remotos.
Ver másEso es todo. La infraestructura por la que ya estás pagando de repente se vuelve más valiosa y eficiente.
El Nuevo Piloto Automático de Tu Servidor
¡Felicidades!
Has pasado de la mano de obra manual a la magia de la automatización. Con los cron jobs manejando el mantenimiento rutinario, las copias de seguridad y el monitoreo, ahora puedes enfocarte en hacer crecer tu sitio web y negocio en lugar de estar pendiente del servidor.
Y recuerda, será un proceso. La automatización se volverá más sofisticada a medida que vayas agregando más y más tareas.
Pero por ahora, comienza con algunos cron jobs esenciales, monitorea cómo funcionan y gradualmente expande tu automatización a medida que te sientas más cómodo con el proceso.
Ahora ve y toma esa siesta, porque acabas de ahorrarte una cantidad enorme de tiempo.