Cómo crear un cronjob en cPanel

Un cronjob es una tarea programada que el servidor ejecuta automáticamente en el momento que tú especificas: cada hora, cada día a medianoche, cada lunes a las 9 de la mañana, o en cualquier intervalo que necesites. En cPanel se configuran desde una interfaz visual sin necesidad de acceso SSH, y son fundamentales para automatizar backups, enviar correos programados, limpiar cachés o sincronizar datos con servicios externos.

En esta guía te explico cómo crear un cronjob en cPanel desde cero, la sintaxis completa con ejemplos y cómo depurar cuando algo no funciona.

Qué es un cronjob y para qué sirve

El nombre viene de cron, el planificador de tareas de los sistemas Unix/Linux, y job (tarea en inglés). Un cronjob es simplemente una instrucción que le dice al servidor: «ejecuta este comando en este momento y repítelo con esta frecuencia».

Usos habituales en hosting web:

  • WordPress: ejecutar el sistema de tareas programadas de WP-Cron (actualizaciones automáticas, publicación programada de posts, limpieza de revisiones)
  • Backups: lanzar un script de copia de seguridad diaria de archivos o base de datos
  • Correo: enviar newsletters o notificaciones programadas
  • Limpieza: borrar archivos temporales, logs antiguos o sesiones caducadas
  • Sincronización: actualizar precios desde un proveedor externo en una tienda online
  • Monitorización: comprobar el estado de la web y enviar alertas si algo falla
  • SEO: regenerar sitemaps automáticamente cuando se publica contenido nuevo

Dónde están los cronjobs en cPanel

En caso de no tener un hosting con cPanel, deberás comprar hosting, acceder a cPanel y buscar la sección Avanzado. Dentro encontrarás Tareas Cron (o Cron Jobs en inglés). Al entrar verás dos secciones:

  • Configuración del correo electrónico para Cron: dónde enviar el output de los cronjobs (opcional pero muy útil para depurar)
  • Añadir nuevo trabajo de Cron: el formulario para crear nuevos cronjobs
  • Trabajos Cron actuales: lista de todos los cronjobs configurados en tu cuenta

La sintaxis del cron: cómo funciona

La sintaxis cron define cuándo se ejecuta la tarea mediante cinco campos separados por espacios, seguidos del comando a ejecutar:

* * * * * comando
│ │ │ │ │
│ │ │ │ └─ Día de la semana (0-7, donde 0 y 7 son domingo)
│ │ │ └─── Mes (1-12)
│ │ └───── Día del mes (1-31)
│ └─────── Hora (0-23)
└───────── Minuto (0-59)

El asterisco * significa «todos los valores posibles». Una coma separa valores múltiples. Un guion define un rango. Una barra / define un intervalo.

Ejemplos de sintaxis cron

SintaxisSignificado
* * * * *Cada minuto
0 * * * *Cada hora (en punto)
0 0 * * *Cada día a medianoche
0 8 * * *Cada día a las 8:00
0 8 * * 1Cada lunes a las 8:00
0 0 * * 0Cada domingo a medianoche
0 0 1 * *El día 1 de cada mes a medianoche
0 0 1 1 *El 1 de enero a medianoche
*/5 * * * *Cada 5 minutos
*/15 * * * *Cada 15 minutos
0 */2 * * *Cada 2 horas
0 8,12,18 * * *A las 8:00, 12:00 y 18:00 cada día
0 8-18 * * 1-5Cada hora de 8:00 a 18:00, de lunes a viernes
0 0 * * 1,3,5Lunes, miércoles y viernes a medianoche

Si no quieres memorizar la sintaxis, hay herramientas online como crontab.guru donde introduces la expresión y te dice en lenguaje natural cuándo se ejecutará.

Cómo crear un cronjob en cPanel paso a paso

Paso 1: Accede a Tareas Cron

cPanel → sección AvanzadoTareas Cron

Paso 2: Configura el correo de notificación (recomendado)

En la sección Configuración del correo electrónico para Cron, introduce tu dirección de email. Cuando un cronjob se ejecute y genere algún output (texto, errores, resultados), cPanel te lo enviará por correo. Es la forma más sencilla de saber si el cron está funcionando o si hay errores.

Si el cron se ejecuta correctamente y no genera output, no recibirás email. Si algo falla, recibirás el mensaje de error.

Para evitar recibir un email en cada ejecución de crons que funcionan correctamente, puedes redirigir el output a /dev/null en el comando (lo veremos más adelante).

Paso 3: Define la frecuencia

En el formulario Añadir nuevo trabajo de Cron encontrarás un menú desplegable con frecuencias predefinidas comunes:

  • Una vez por hora
  • Una vez al día
  • Una vez a la semana
  • Una vez al mes

Si seleccionas una de estas opciones, cPanel rellena automáticamente los cinco campos de la sintaxis cron. Para frecuencias personalizadas, rellena los campos manualmente.

Paso 4: Escribe el comando

En el campo Comando escribe la instrucción que quieres ejecutar. Este es el campo más importante y donde más errores se cometen. Hay varios tipos de comandos habituales:

Ejecutar un script PHP:

bash

/usr/bin/php /home/tuusuario/public_html/script.php

Ejecutar una URL (mediante wget o curl):

bash

/usr/bin/wget -q -O /dev/null "https://tudominio.com/cron.php"

bash

/usr/bin/curl -s "https://tudominio.com/cron.php" > /dev/null 2>&1

Ejecutar WP-Cron de WordPress:

bash

/usr/bin/php /home/tuusuario/public_html/wp-cron.php

Ejecutar un script de shell:

bash

/bin/bash /home/tuusuario/scripts/backup.sh

Paso 5: Haz clic en «Añadir nuevo trabajo de Cron»

El cronjob aparecerá inmediatamente en la lista de Trabajos Cron actuales y comenzará a ejecutarse según la frecuencia configurada.

Comandos para cronjobs en WordPress

WordPress tiene su propio sistema de tareas programadas llamado WP-Cron. Por defecto, WP-Cron se dispara cada vez que alguien visita la web — lo que significa que en webs con poco tráfico, las tareas programadas pueden no ejecutarse en el momento correcto, y en webs con mucho tráfico puede generar carga innecesaria.

La solución es desactivar WP-Cron y reemplazarlo con un cronjob real del sistema:

Paso 1: Añade esta línea al wp-config.php:

php

define('DISABLE_WP_CRON', true);

Paso 2: Crea un cronjob en cPanel que ejecute WP-Cron directamente. El intervalo recomendado es cada 5 o 15 minutos:

bash

*/5 * * * * /usr/bin/php /home/tuusuario/public_html/wp-cron.php > /dev/null 2>&1

O mediante curl si prefieres no usar el binario PHP directamente:

bash

*/15 * * * * /usr/bin/curl -s "https://tudominio.com/wp-cron.php?doing_wp_cron" > /dev/null 2>&1

El > /dev/null 2>&1 al final redirige tanto el output estándar como los errores a /dev/null, evitando que recibas un email en cada ejecución.

Esta configuración es especialmente importante si usas plugins de publicación programada, newsletters automáticas o cualquier funcionalidad que dependa de la ejecución puntual de tareas. Está directamente relacionada con el rendimiento descrito en el artículo sobre cómo acelerar WordPress.

Ejemplos prácticos de cronjobs para hosting

Backup diario de la base de datos

bash

0 2 * * * /usr/bin/mysqldump -u tuusuario -ptupassword tunombredb > /home/tuusuario/backups/db_$(date +\%Y\%m\%d).sql 2>&1

Este cron se ejecuta cada día a las 2:00 AM y crea un archivo SQL con la fecha en el nombre. Aunque en BlumHost los backups con JetBackup se hacen automáticamente, un backup adicional de la base de datos nunca está de más.

Limpieza de archivos temporales

bash

0 3 * * 0 /bin/find /home/tuusuario/tmp -type f -mtime +7 -delete > /dev/null 2>&1

Cada domingo a las 3:00 AM, borra archivos de la carpeta /tmp con más de 7 días de antigüedad.

Regenerar el sitemap de WordPress

bash

0 6 * * * /usr/bin/curl -s "https://tudominio.com/?sitemap=1" > /dev/null 2>&1

Cada día a las 6:00 AM fuerza la regeneración del sitemap XML, útil si tu plugin de SEO no lo actualiza automáticamente.

Enviar un correo de prueba para verificar que el cron funciona

bash

* * * * * echo "El cron funciona correctamente - $(date)" | mail -s "Test Cron" tuemail@tudominio.com

Útil solo para pruebas — recuerda eliminarlo después.

Script Python en cPanel

Si tienes un script Python en tu hosting:

bash

0 8 * * * /usr/bin/python3 /home/tuusuario/scripts/mi_script.py > /home/tuusuario/logs/python_cron.log 2>&1

Actualizar base de datos de precios en PrestaShop

bash

0 */4 * * * /usr/bin/php /home/tuusuario/public_html/modules/importador/cron.php > /dev/null 2>&1

Cada 4 horas ejecuta el script de importación de precios del módulo.

Rutas importantes que debes conocer

Los comandos del cronjob necesitan rutas absolutas porque el entorno del cron no tiene las mismas variables de entorno que una sesión de terminal normal. Las rutas más habituales en servidores con cPanel:

ProgramaRuta habitual
PHP/usr/bin/php o /usr/local/bin/php
PHP (versión específica)/usr/bin/php81 o /opt/cpanel/ea-php81/root/usr/bin/php
Python 3/usr/bin/python3
Wget/usr/bin/wget
Curl/usr/bin/curl
MySQL/usr/bin/mysql
MySQLdump/usr/bin/mysqldump
Bash/bin/bash

Cómo encontrar la ruta correcta de PHP en tu servidor:

Desde SSH:

bash

which php

O desde un script PHP temporal con phpinfo() que ya vimos en el artículo sobre cambiar la versión de PHP en cPanel.

Si no tienes acceso SSH, el soporte de tu hosting puede indicarte la ruta correcta.

Cómo depurar un cronjob que no funciona

Es frustrante crear un cron y no saber si se está ejecutando. Estos son los pasos para diagnosticarlo:

Verificación 1: Comprueba que el cron está en la lista

En cPanel → Tareas Cron → Trabajos Cron actuales. Si aparece en la lista, cPanel lo tiene registrado. Si no aparece, no se guardó correctamente.

Verificación 2: Activa las notificaciones por email

Asegúrate de que tienes un email configurado en la sección de notificaciones. Si el cron genera cualquier output o error, lo recibirás por correo.

Verificación 3: Redirige el output a un archivo de log

Modifica el comando para guardar el output en un archivo que puedas revisar:

bash

/usr/bin/php /home/tuusuario/public_html/script.php >> /home/tuusuario/logs/cron.log 2>&1

El >> añade al final del archivo (sin sobrescribir). El 2>&1 captura también los errores. Después de la primera ejecución, abre el archivo cron.log desde el gestor de archivos de cPanel para ver qué ocurrió.

Verificación 4: Prueba el comando manualmente desde SSH

Si tienes acceso SSH, ejecuta el comando del cron directamente en la terminal. Si falla ahí, también fallará en el cron. Los errores que aparezcan te indicarán el problema:

bash

/usr/bin/php /home/tuusuario/public_html/script.php

Verificación 5: Comprueba los permisos del script

El script que ejecuta el cron debe tener permisos de ejecución. Desde SSH:

bash

chmod 755 /home/tuusuario/scripts/backup.sh

Verificación 6: Verifica que la ruta de PHP es correcta

Prueba con la ruta completa de la versión específica que necesitas. Si tu hosting usa EA-PHP:

bash

/opt/cpanel/ea-php81/root/usr/bin/php /home/tuusuario/public_html/script.php

Errores frecuentes y sus soluciones

«No such file or directory»: la ruta del script o del binario PHP es incorrecta. Verifica con which php desde SSH.

«Permission denied»: el script no tiene permisos de ejecución. Usa chmod 755 para darlos.

El cron se ejecuta pero no hace nada: el script tiene un error interno. Revisa el log o activa el output para ver el error.

El cron no se ejecuta nunca: verifica la sintaxis cron con crontab.guru. Un error en la sintaxis hace que el cron se ignore silenciosamente.

Recibo demasiados emails: añade > /dev/null 2>&1 al final del comando para suprimir todo el output.

Gestionar y eliminar cronjobs en cPanel

Editar un cronjob existente: en la lista de trabajos cron actuales, haz clic en Editar junto al cron que quieres modificar. Cambia la frecuencia o el comando y guarda.

Eliminar un cronjob: haz clic en Eliminar junto al cron. Se pide confirmación antes de borrarlo definitivamente.

Ver todos los cronjobs desde SSH: si tienes acceso SSH, puedes ver y editar el crontab directamente:

bash

crontab -l    # Listar todos los cronjobs
crontab -e    # Editar el crontab en el editor de texto
crontab -r    # Eliminar TODOS los cronjobs (con cuidado)

Los cambios hechos desde SSH se reflejan en cPanel y viceversa — son la misma lista.

Cronjobs en VPS vs cronjobs en hosting compartido

En hosting compartido con cPanel, los cronjobs tienen algunas limitaciones:

  • La frecuencia mínima suele ser de 1 minuto (aunque algunos proveedores la limitan a 5 o 15 minutos)
  • Los scripts tienen límites de tiempo de ejecución del servidor
  • No tienes acceso a comandos del sistema que requieren privilegios root

En un VPS tienes control total sobre el crontab del sistema con acceso root, lo que permite:

  • Ejecutar comandos con privilegios elevados
  • Cronjobs sin límite de tiempo de ejecución
  • Usar systemd timers como alternativa más moderna a cron
  • Instalar herramientas específicas (como rclone para sincronización con servicios cloud)

Si tus necesidades de automatización han crecido más allá de lo que permite el hosting compartido, el artículo sobre cuándo necesitas un VPS puede ayudarte a tomar la decisión.


Preguntas frecuentes

¿Cuál es la frecuencia mínima de un cronjob en cPanel?
En la mayoría de configuraciones de cPanel, incluyendo BlumHost, la frecuencia mínima es de 1 minuto (* * * * *). Algunos proveedores la limitan a 5 o 15 minutos por razones de rendimiento del servidor.

¿Los cronjobs consumen recursos de mi cuenta de hosting?
Sí. Cada vez que se ejecuta un cronjob consume CPU y RAM de tu cuenta. Si tienes muchos cronjobs ejecutándose frecuentemente con scripts pesados, puede impactar en el rendimiento de tu web. Planifica bien las frecuencias y evita ejecutar scripts pesados cada minuto.

¿Puedo ejecutar cronjobs con una versión específica de PHP?
Sí. Usa la ruta del binario de la versión que necesitas. Por ejemplo, para PHP 8.1: /opt/cpanel/ea-php81/root/usr/bin/php. Consulta con el soporte de tu hosting la ruta exacta disponible.

¿Los cronjobs se ejecutan si la web está caída?
Los cronjobs son independientes del servidor web. Si tu web da error 500 o está en mantenimiento, los cronjobs del servidor siguen ejecutándose. Sí pueden fallar si el script que ejecutan depende de que la web funcione (como los cronjobs que hacen peticiones HTTP a tu propio dominio).

¿Cómo sé en qué zona horaria se ejecutan los cronjobs?
En cPanel, los cronjobs usan la zona horaria del servidor. Puedes verla en cPanel → información general del servidor, o ejecutando date desde SSH. En BlumHost los servidores usan hora española (Europe/Madrid).

¿Puedo usar cronjobs para hacer backups si ya tengo JetBackup?
JetBackup en BlumHost hace backups automáticos diarios de toda la cuenta. Los cronjobs de backup son útiles para necesidades específicas adicionales: backups más frecuentes de la base de datos, copias a destinos externos (S3, Google Drive) o backups de datos que JetBackup no cubre por su naturaleza.

Miguel Taboada

Ingeniero en Telecomunicaciones e Informática. Creé BlumHost para ofrecer un hosting distinto a los demás, que ofrezca la mejor atención al cliente, al menor precio y con la mejor calidad.

Ver todas las entradas

Deja una respuesta

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