Trabajos de cron en cPanel
Trabajos de cron en cPanel
Los trabajos de cron te permiten ejecutar comandos o scripts automaticamente en horarios programados. Son ideales para tareas repetitivas como respaldos automaticos, limpieza de cache, envio de reportes o actualizacion de datos.
1. Acceder a Cron Jobs
Inicio → Avanzado → Cron Jobs
2. Configurar tu correo electronico
Antes de crear cron jobs, configura el correo donde recibiras las notificaciones:
- En Cron Email, escribe tu direccion de correo electronico.
- Haz clic en Update Email.
Importante: Si no configuras el correo, no recibiras notificaciones de errores ni resultados de los cron jobs.
3. Entender la programacion de cron
Los cron jobs usan un formato de 5 campos para definir cuando ejecutarse:
| Campo | Valor | Ejemplo |
|---|---|---|
| Minuto | 0-59 | 0 |
| Hora | 0-23 | 14 |
| Dia del mes | 1-31 | 1 |
| Mes | 1-12 | * |
| Dia de la semana | 0-7 (0 y 7 = Domingo) | 1 |
Ejemplos de programacion
| Expresion | Significado |
|---|---|
0 * * * * |
Cada hora (minuto 0) |
0 0 * * * |
Todos los dias a medianoche |
0 9 * * 1 |
Todos los lunes a las 9:00 AM |
*/5 * * * * |
Cada 5 minutos |
0 8,20 * * * |
Todos los dias a las 8:00 AM y 8:00 PM |
0 0 1 * * |
El primer dia de cada mes a medianoche |
0 0 * * 0 |
Todos los domingos a medianoche |
30 4 * * * |
Todos los dias a las 4:30 AM |
Consejo: Usa el asistente de cPanel para configurar horarios sin necesidad de memorizar la sintaxis.
4. Crear un cron job
Usar el asistente (recomendado)
- En Add New Cron Job, usa los menus desplegables para configurar:
- Minute: Minuto de ejecucion.
- Hour: Hora de ejecucion.
- Day: Dia del mes.
- Month: Mes.
- Weekday: Dia de la semana.
- En Command, escribe el comando a ejecutar.
- Haz clic en Add New Cron Job.
Escribir la expresion manualmente
- Selecciona Common Settings y elige una configuracion predefinida.
- O escribe tu propia expresion en los campos.
- En Command, escribe el comando.
- Haz clic en Add New Cron Job.
5. Comandos comunes para cron jobs
Ejecutar un script PHP
php /home/usuario/public_html/script.php
Ejecutar un script Python
python3 /home/usuario/public_html/script.py
Ejecutar un script bash
/bin/bash /home/usuario/script.sh
Ejecutar un script Perl
perl /home/usuario/script.pl
Hacer un respaldo automatico
tar -czf /home/usuario/respaldo-$(date +\%Y\%m\%d).tar.gz /home/usuario/public_html
Limpiar archivos temporales
find /home/usuario/public_html/tmp -type f -mtime +7 -delete
Enviar un correo con resultado
php /home/usuario/script.php | mail -s "Resultado del reporte" [email protected]
6. Gestionar cron jobs existentes
Desde la lista de cron jobs:
Editar un cron job
- Haz clic en Edit junto al cron job.
- Modifica la programacion o el comando.
- Haz clic en Save Changes.
Pausar un cron job
- Haz clic en el interruptor On/Off para desactivarlo temporalmente.
- El cron job se mantiene en la lista pero no se ejecuta.
Eliminar un cron job
- Haz clic en Delete junto al cron job.
- Confirma la eliminacion.
7. Ejemplos practicos
Reporte diario a las 8:00 AM
0 8 * * * php /home/usuario/public_html/reporte-diario.php
Respaldo semanal los domingos a medianoche
0 0 * * 0 tar -czf /home/usuario/backups/respaldo-$(date +\%Y\%m\%d).tar.gz /home/usuario/public_html
Limpiar cache cada 6 horas
0 */6 * * * find /home/usuario/public_html/cache -type f -mtime +1 -delete
Sincronizar datos cada 15 minutos
*/15 * * * * php /home/usuario/public_html/sincronizar.php
Enviar newsletter los viernes a las 10:00 AM
0 10 * * 5 php /home/usuario/public_html/enviar-newsletter.php
Verificar disponibilidad del sitio cada 5 minutos
*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://tudominio.com > /dev/null
8. Logs y monitoreo
Ver resultados de cron jobs
- Las notificaciones se envian al correo configurado en Cron Email.
- Si el comando produce salida, la recibiras por correo.
Ver errores
- Si un cron job falla, recibiras un correo con el mensaje de error.
- Algunos errores comunes:
- Ruta incorrecta del script.
- Permisos insuficientes.
- PHP no encontrado en la ruta especificada.
Solucionar problemas de cron jobs
- Verifica que el script sea ejecutable.
- Prueba el comando manualmente via SSH o Terminal.
- Revisa los permisos del archivo.
- Verifica la ruta absoluta del script.
9. Errores comunes y soluciones
| Error | Causa | Solucion |
|---|---|---|
| "No such file or directory" | Ruta incorrecta del script | Usa la ruta absoluta completa |
| "Permission denied" | Sin permisos de ejecucion | Cambia permisos a 755 con chmod 755 script.php |
| "php: command not found" | PHP no encontrado | Usa la ruta completa: /usr/bin/php |
| "No output" | El script no produce salida | Verifica que el script funcione correctamente |
| Correo vacio | El script no genera output | Agrega echo o print en el script para verificar |
10. Consejos practicos
- No ejecutes cron jobs muy frecuentes: Cada minuto o mas puede sobrecargar el servidor. Usa intervalos razonables.
- Usa rutas absolutas: Siempre usa la ruta completa (ejemplo:
/home/usuario/public_html/script.php). - Maneja errores en scripts: Incluye manejo de excepciones y registros de errores.
- No ejecutes tareas pesadas en horas pico: Programa respaldos y sincronizaciones en horas de bajo trafico.
- Monitorea regularmente: Revisa los correos de notificacion para detectar errores.
- Documenta tus cron jobs: Mantén un registro de que hace cada cron job y por que esta programado asi.
- Prueba antes de programar: Ejecuta el comando manualmente para verificar que funciona.
- Usa comentarios: Si tu script lo permite, incluye comentarios que expliquen su proposito.
11. Restricciones en hosting compartido
En hosting compartido existen algunas limitaciones:
- Intervalo minimo: Generalmente 5 minutos (no se permite ejecutar cada minuto).
- Tiempo de ejecucion: Los scripts pueden tener limite de tiempo (tipicamente 30 segundos).
- Recursos: No puedes ejecutar tareas que consuman demasiada CPU o memoria.
- Acceso al sistema: Tu acceso esta limitado al directorio de tu usuario.
Consejo: Si necesitas ejecutar tareas cada menos de 5 minutos o tareas pesadas, considera un VPS dedicado.