Desarrollo y bases de datos
Crear y ejecutar tareas cron (Cronjobs) en cPanel
Una tarea cron ejecuta un comando con la frecuencia que configures. Sirve para programar acciones como procesar una cola, generar un informe o lanzar el mantenimiento de una aplicación.
Aunque se pueden gestionar desde la terminal (comando crontab), la sección Tareas cron de cPanel nos facilita la configuración desde una sencilla interfaz.
Correo electrónico para notificaciones
Es la dirección a la que cron envía la salida estándar y los errores que produzca el comando. Si la tarea no genera salida, no recibirás un mensaje que confirme cada ejecución.
Agregar nuevas tareas
En cPanel > Trabajos de cron (o Tareas cron), utiliza Agregar nueva tarea. Elige una frecuencia habitual o completa minuto, hora, día del mes, mes y día de la semana. Introduce después el comando y guarda.
En comando establecemos aquello que queremos que se ejecute, por ejemplo, si disponemos de un fichero cron.php en public_html que realiza tareas de mantenimiento debemos indicar:
cd /home/usuario_cpanel/public_html && /opt/alt/php83/usr/bin/php cron.php >> /home/usuario_cpanel/cron.php.log 2>&1
El ejemplo utiliza PHP 8.3: comprueba que esa versión exista y sea compatible. cd fija el directorio de trabajo para los scripts que usan rutas relativas; && evita ejecutarlos desde otra carpeta si falla el cambio. El ejemplo guarda la salida en un registro para no perder los errores. Revisa y rota ese fichero: redirigir todo a /dev/null evita los correos, pero también oculta cualquier fallo de la tarea.
Ejecutar una URL desde cron
Cuando una aplicación proporciona una URL de tareas, puedes solicitarla con curl:
curl --fail --silent --show-error --max-time 300 https://tudominio.com/ruta-de-cron
Durante las primeras pruebas conserva la salida de diagnóstico y comprueba el resultado de la tarea en la aplicación. El correo contiene la salida, no necesariamente el código de retorno. Cuando confirmes que funciona, puedes guardarla en un registro privado. Crea antes la carpeta de destino con los permisos adecuados:
curl --fail --silent --show-error --max-time 300 https://tudominio.com/ruta-de-cron >> /home/usuario_cpanel/logs/cron-url.log 2>&1
Es preferible ejecutar directamente el comando PHP o CLI de la aplicación cuando exista, porque evita DNS, SSL y una petición web completa. No incluyas contraseñas o tokens permanentes en una URL que pueda quedar guardada en historiales y registros.
Elige un intervalo superior al tiempo máximo de ejecución. Si una llamada tarda cinco minutos y programas otra cada minuto, las tareas pueden solaparse y agotar procesos. La propia aplicación debe implementar un bloqueo cuando no admita ejecuciones simultáneas.
Tareas cron actuales
En tareas cron actuales disponemos de un listado de las cronjobs añadidas para poder editar o eliminar según se requiera.
Verificar la programación
| Frecuencia | Minuto | Hora | Día del mes | Mes | Día de la semana |
|---|---|---|---|---|---|
| Cada 15 minutos | */15 |
* |
* |
* |
* |
| Cada día a las 03:10 | 10 |
3 |
* |
* |
* |
| Cada lunes a las 03:10 | 10 |
3 |
* |
* |
1 |
Estas horas corresponden al entorno de cron del servidor; confirma su zona horaria antes de programar una acción ligada a una hora local. En cPanel completa esos campos por separado: no añadas los cinco campos al cuadro Comando.
Después de guardar, comprueba la próxima ejecución mediante su registro o el resultado esperado. Una prueba manual correcta no demuestra que cron tenga el mismo entorno: no suele cargar .bashrc, las variables de tu terminal ni NVM. Usa rutas absolutas y configura explícitamente lo que necesite el script.
Evitar ejecuciones simultáneas
Si el comando se ejecuta en primer plano y flock está disponible, puedes mantener un bloqueo durante toda su ejecución:
/usr/bin/flock -n /home/usuario_cpanel/tarea.lock /opt/alt/php83/usr/bin/php /home/usuario_cpanel/apps/mi-proyecto/tarea.php
Verifica las rutas y que la aplicación no dependa de otro directorio de trabajo. El bloqueo se libera cuando termina el comando; no cubre trabajos que este lance en segundo plano ni procesos remotos que continúen después de una llamada HTTP. Si no consigue el bloqueo, -n omite esa ejecución: comprueba que ese comportamiento sirve para tu tarea.
Eliminar una entrada de cron impide futuras ejecuciones, pero no detiene una que ya esté en marcha. Si la tarea realiza cobros, envíos o cambios de datos, revisa su estado antes de repetirla tras un timeout.
También te puede ayudar
- Eliminar correos antiguos de forma segura Limpia correo antiguo sin borrar Maildir a ciegas; valida la cuenta y carpeta, prueba primero y cons...
- Binarios y herramientas disponibles FFmpeg, Tesseract, ImageMagick, cURL y más Consulta los binarios disponibles para vídeo, imágenes, PDF, OCR, redes, DNS, control de versiones y...
- El fichero .htaccess, lo que necesitas saber Conoce el alcance recursivo de .htaccess y las opciones que permite ajustar por directorio; errores,...
- Generar informes CSV de correo y cron desde cPanel Genera reportes CSV con PHP y UAPI para inventariar buzones, reenviadores, respuestas automáticas y...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.