Cómo configurar un CRON job en cPanel y DirectAdmin para tareas programadas
¿Qué es un CRON job y por qué lo necesitas?
Imagina que tienes un asistente personal que trabaja 24/7 sin descanso, sin vacaciones y sin pedir aumento. Eso es exactamente un cron job en tu servidor. Se trata de una tarea programada que el sistema operativo Linux ejecuta automáticamente en el momento exacto que tú le indiques.
Los cron jobs son la columna vertebral de la automatización servidor. Gracias a ellos, puedes programar desde el envío de correos electrónicos hasta la limpieza de archivos temporales, la generación de copias de seguridad, la actualización de bases de datos o la ejecución de scripts complejos. Todo esto sin que tengas que intervenir manualmente.
Lo mejor es que tanto cPanel como DirectAdmin (los dos paneles de control más populares del mundo) incluyen interfaces gráficas para crear y gestionar estos cron jobs sin necesidad de tocar la terminal. Sin embargo, entender qué hay detrás te dará un control total sobre tus tareas programadas.
En esta guía completa, paso a paso, aprenderás desde cero cómo configurar un cron job en ambos paneles, qué significan los cinco asteriscos que seguro has visto, y algunos ejemplos prácticos que te harán la vida mucho más fácil.
Anatomía de un comando cron: los cinco asteriscos
Antes de entrar en materia, necesitas entender la sintaxis básica. Un cron job se define con una línea de texto que tiene este formato:
* * * * * comando_a_ejecutar
Esos cinco campos separados por espacios representan, en orden:
- Minuto (0-59)
- Hora (0-23, formato 24h)
- Día del mes (1-31)
- Mes (1-12)
- Día de la semana (0-7, donde 0 y 7 son domingo)
Cuando ves un asterisco (*) significa "todos los valores posibles". Por ejemplo:
* * * * *→ ejecuta el comando cada minuto0 * * * *→ ejecuta cada hora en punto0 3 * * *→ ejecuta a las 3:00 AM todos los días15 2 * * 1→ ejecuta a las 2:15 AM cada lunes
[INFO] Algunos paneles permiten usar valores como
*/5para indicar "cada 5 minutos". Por ejemplo,*/10 * * * *ejecuta el comando cada 10 minutos.
Configurar un CRON job en cPanel
cPanel es probablemente el panel más extendido en el hosting compartido y VPS. Su interfaz es muy amigable y en menos de cinco minutos tendrás tu primera tarea programada funcionando.
Paso 1: Accede al área de Cron Jobs
Después de iniciar sesión en tu cPanel, busca la sección "Avanzado" o "Tareas Programadas". Dependiendo de la versión, puede aparecer como "Cron Jobs" directamente en la página principal. Si no lo encuentras, usa el buscador en la esquina superior derecha y escribe "cron".
Paso 2: Configura el entorno del cron job
cPanel te mostrará un formulario con los siguientes campos:
- Minuto: puedes elegir valores específicos o usar
*/5para cada 5 minutos - Hora: por ejemplo,
3para las 3 AM - Día del mes: normalmente
*para todos los días - Mes:
*para todos los meses - Día de la semana:
*para todos los días
Además, verás un campo llamado "Command" (Comando). Aquí es donde escribes la instrucción que quieres ejecutar. Es importante que uses la ruta completa del programa o script.
Por ejemplo, para ejecutar un script PHP ubicado en tu carpeta pública:
/usr/bin/php /home/tuusuario/public_html/scripts/backup.php
Paso 3: Guarda y verifica
Haz clic en "Add New Cron Job" y el sistema te confirmará que la tarea se ha creado. En la parte inferior de la página verás una lista con todos tus cron jobs activos, su próxima ejecución y su historial. Puedes editarlos o eliminarlos cuando quieras.
[TIP] En cPanel, siempre que puedas, usa la ruta absoluta del comando. Si no sabes dónde está PHP, ejecuta
which phpen la terminal o prueba con/usr/local/bin/phpque es la ruta más común en cPanel.
Configurar un CRON job en DirectAdmin
DirectAdmin es otro panel muy robusto, conocido por ser ligero y rápido. El proceso para configurar cron jobs aquí es ligeramente diferente, pero igual de sencillo.
Paso 1: Entra en la sección de Cron
Inicia sesión en tu DirectAdmin y busca el icono "Cron Jobs" dentro del apartado "Advanced Features". En versiones más recientes, puede estar directamente en el menú principal.
Paso 2: Elige el tipo de cron
DirectAdmin te ofrece dos opciones:
- Simple Cron: una interfaz con campos desplegables para elegir minuto, hora, día, etc.
- Advanced Cron: te permite escribir la línea completa de cron directamente.
Para empezar, te recomiendo usar Simple Cron si eres principiante. Solo tienes que seleccionar los valores que necesitas con los menús desplegables.
Paso 3: Escribe el comando
En el campo "Command to run" (Comando a ejecutar), escribe la instrucción. DirectAdmin, a diferencia de cPanel, te permite elegir el usuario bajo el cual se ejecutará la tarea (normalmente tu propio usuario).
Un ejemplo típico sería:
/usr/bin/php /home/usuario/domains/tudominio.com/public_html/cron.php
Paso 4: Guarda y monitoriza
Pulsa "Add Cron" y listo. DirectAdmin te mostrará un mensaje de confirmación y la tarea aparecerá en la lista de crons activos. Puedes ver el historial de ejecuciones desde el botón "View Cron Log".
[INFO] Si tienes un servidor con Syspanel (antes conocido como HestiaCP), recuerda que el acceso se realiza a través del puerto 2106 (por ejemplo,
https://tuserver.com:2106). Allí también encontrarás una sección de cron jobs en la pestaña de configuración avanzada.
Ejemplos prácticos de tareas programadas
Ahora que ya sabes cómo crear un cron job en ambos paneles, vamos a ver algunos ejemplos reales que te serán de gran utilidad.
1. Copia de seguridad automática de tu base de datos MySQL
Esta es una de las tareas más comunes. Puedes programar un volcado de tu base de datos cada noche:
0 2 * * * mysqldump -u usuario -pclave basededatos > /home/usuario/backups/bd_$(date +\%Y\%m\%d).sql
[WARNING] Guardar contraseñas en comandos cron es un riesgo de seguridad. Si tu servidor lo permite, crea un archivo
.my.cnfen el directorio home con las credenciales y usa simplementemysqldump basededatos.
2. Limpieza de archivos temporales
Para borrar archivos antiguos de una carpeta temporal (por ejemplo, mayores de 7 días):
0 4 * * * find /home/usuario/tmp/* -mtime +7 -exec rm {} \;
3. Envío de correos programados
Si tienes un script PHP que envía newsletters:
30 9 * * 1 /usr/bin/php /home/usuario/public_html/enviar_newsletter.php
Este ejemplo envía el boletín cada lunes a las 9:30 AM.
4. Reinicio de servicios
Para reiniciar un servicio que se queda colgado (como Apache):
*/15 * * * * /usr/sbin/service apache2 restart
[TIP] Si tu cron job tarda mucho en completarse, considera usar
flockpara evitar que se lancen múltiples instancias simultáneas:*/5 * * * * flock -n /tmp/mitarea.lock /usr/bin/php /home/usuario/tarea.php
Errores comunes y cómo solucionarlos
Aunque el proceso es sencillo, hay errores típicos que todo el mundo comete al principio.
El cron no se ejecuta
- Verifica la ruta: el comando debe tener la ruta completa. Si usas
phpy no está en el PATH, no funcionará. - Revisa los permisos: el script debe ser ejecutable (
chmod +x script.sh). - Mira los logs: en cPanel, la sección de Cron Jobs tiene un historial. En DirectAdmin, busca el log en
~/.cron.log.
El cron se ejecuta pero no hace nada
- Comprueba los errores: redirige la salida a un archivo para ver qué pasa:
0 * * * * /usr/bin/php /home/usuario/script.php >> /home/usuario/cron.log 2>&1
- Entorno diferente: los cron jobs no cargan tu perfil de usuario. Si tu script depende de variables de entorno, debes definirlas manualmente dentro del comando.
Problemas con las rutas
En PHP, por ejemplo, si usas rutas relativas dentro del script, fallarán. Siempre usa dirname(__FILE__) o rutas absolutas.
Preguntas frecuentes (FAQ)
¿Cuál es la frecuencia mínima de un cron job?
En la mayoría de servidores, la mínima frecuencia es de 1 minuto. Si necesitas algo más frecuente (como cada 30 segundos), tendrías que usar un bucle dentro del script o herramientas como watch.
¿Consumen recursos los cron jobs?
Sí, cada cron job consume recursos del servidor en el momento de ejecución. Si tienes muchos crons programados a la misma hora, pueden ralentizar tu sitio. Lo ideal es distribuirlos en horas diferentes.
¿Puedo programar un cron job desde la terminal?
Por supuesto. Ejecuta crontab -e para editar tu tabla de crons personal. La sintaxis es la misma que hemos visto. Esto es útil si tu panel no tiene interfaz gráfica o prefieres la línea de comandos.
¿Qué pasa si mi cuenta de hosting no tiene acceso a cron jobs?
Algunos planes de hosting compartido muy básicos no incluyen cron jobs. En ese caso, alternativas como servicios externos (cron-job.org) pueden ejecutar tareas HTTP periódicamente.
¿Cómo pruebo un cron sin esperar a la hora programada?
Puedes ejecutar el comando manualmente en la terminal primero para verificar que funciona. También puedes crear un cron temporal que se ejecute dentro de un minuto para hacer pruebas.
Consejos finales para la automatización servidor
Configurar cron jobs es solo el principio. Para sacar el máximo partido a tus tareas programadas, sigue estas buenas prácticas:
- Documenta cada cron: anota qué hace, cada cuánto y por qué existe. Te lo agradecerás en el futuro.
- Usa nombres descriptivos: en los paneles que lo permiten, pon un nombre claro a cada tarea.
- Programa las tareas pesadas en horas valle: las 3-5 AM suelen ser las mejores.
- Monitorea tus crons: revisa los logs semanalmente para detectar fallos silenciosos.
- Haz pruebas siempre: antes de lanzar un cron en producción, pruébalo manualmente.
Con esta guía, ya tienes todo lo necesario para dominar los cron jobs en cPanel y DirectAdmin. La automatización servidor está a tu alcance: empieza con una tarea sencilla, verifica que funciona y ve aumentando la complejidad. En poco tiempo tendrás tu servidor trabajando solo, como ese asistente perfecto que nunca falla.
