Cómo gestionar tareas cron en Plesk
¿Qué es una tarea cron y por qué te conviene dominarla?
Si alguna vez has deseado que tu servidor haga cosas por ti de forma automática —como enviar un correo cada mañana, limpiar archivos temporales o actualizar un certificado SSL—, las tareas cron son tu mejor aliado. En términos simples, un cron job es como un despertador que le dice a tu servidor: "a esta hora exacta, ejecuta este script". No necesitas estar despierto ni conectado para que ocurra.
En Plesk, gestionar estas tareas es más sencillo de lo que parece. Aunque al principio pueda sonar a cosa de hackers, te prometo que con esta guía vas a dominarlo en menos de lo que tardas en tomarte un café. Vamos paso a paso, sin prisas y con ejemplos prácticos que puedes copiar y pegar.
¿Dónde se esconden las tareas cron en Plesk?
Antes de nada, tienes que saber dónde encontrarlas. Plesk incluye un gestor gráfico que evita que toques la terminal a lo bruto. Para acceder:
- Inicia sesión en tu panel de Plesk.
- Busca la sección "Programador de tareas" o "Scheduled Tasks" (depende del idioma y la versión, pero suele estar en el menú de la izquierda, dentro de tu dominio o suscripción).
- Haz clic en "Añadir tarea" o "Add Task".
Ahí empieza la magia. Verás un formulario con campos como "Comando", "Hora", "Día del mes", etc. No te asustes: te explico cada campo con calma en las siguientes secciones.
Anatomía de una tarea cron: los 5 campos básicos
Un cron job se define con una línea de tiempo compuesta por 5 valores, separados por espacios. Cada valor controla una parte del calendario. Memoriza esta tabla y serás un maestro:
| Campo | Qué controla | Valores posibles |
|---|---|---|
| Minuto | Minuto de la hora | 0-59 |
| Hora | Hora del día (24h) | 0-23 |
| Día del mes | Día del mes | 1-31 |
| Mes | Mes del año | 1-12 o nombres (jan, feb...) |
| Día de la semana | Día de la semana | 0-7 (0 y 7 = domingo) |
Por ejemplo, 0 3 * * * significa "ejecutar a las 3:00 AM todos los días". El asterisco * significa "todos los valores posibles". Así que:
30 2 * * *→ a las 2:30 AM, cada día.0 1 * * 1→ a la 1:00 AM, solo los lunes.*/15 * * * *→ cada 15 minutos (el*/es un atajo para "cada X").
En Plesk, no tienes que escribir esto a mano si no quieres. El panel te ofrece una interfaz con menús desplegables para elegir la frecuencia. Pero entender la lógica te ayudará a depurar si algo falla.
Cómo crear tu primera tarea cron en Plesk (paso a paso)
Vamos a hacer algo útil y sencillo: un script que borre archivos temporales de una carpeta. Supón que tienes un directorio llamado /tmp/miweb y quieres limpiarlo cada noche.
- En el formulario de Plesk, escribe un nombre descriptivo, por ejemplo "Limpieza temporal".
- En el campo "Comando", introduce:
find /tmp/miweb -type f -mtime +7 -delete. Esto borra archivos con más de 7 días de antigüedad. - En "Programación", elige "A diario" y pon la hora a las 4:00 AM.
- Haz clic en "Aceptar".
¡Listo! Ya tienes tu primer cron job. Pero espera, hay un detalle importante: el usuario que ejecuta el comando. En Plesk, puedes elegir entre el usuario del sistema o un usuario específico. Si tu script necesita permisos especiales (por ejemplo, escribir en una carpeta protegida), asegúrate de seleccionar el usuario correcto.
Variables de entorno y rutas absolutas: el error más común
Uno de los fallos más típicos al crear tareas cron es que los scripts funcionan en tu terminal, pero no cuando los ejecuta el cron. ¿Por qué? Porque el entorno de cron es "limpio": no carga tu .bashrc ni variables de entorno como PATH.
Ejemplo práctico: si tu script usa php, pero la ruta del binario no está en el PATH del cron, fallará. La solución es usar rutas absolutas. En lugar de php script.php, escribe /usr/bin/php /ruta/completa/script.php.
Para saber dónde está tu PHP, ejecuta en la terminal: which php. Copia esa ruta y úsala en tu comando.
[TIP] En Plesk, también puedes usar la opción "Ejecutar como" para elegir el usuario del sistema. Si tu script necesita acceso a archivos de tu sitio web, elige el usuario de tu suscripción (suele ser algo como
miweb_usr).
Tareas cron con scripts PHP, Python o Bash: ejemplos reales
1. Ejecutar un script PHP
Imagina que tienes un script que envía un boletín de noticias. En Plesk, el comando sería:
/usr/bin/php /var/www/vhosts/tudominio.com/httpdocs/boletin.php
Y en la programación, por ejemplo, cada lunes a las 9:00 AM: 0 9 * * 1.
2. Ejecutar un script de Python
Si prefieres Python, la ruta típica es /usr/bin/python3. Un ejemplo:
/usr/bin/python3 /home/miweb/scripts/limpiar.py
3. Ejecutar un script Bash
Para tareas de sistema, un script Bash es ideal. Por ejemplo, hacer una copia de seguridad de una base de datos:
/bin/bash /scripts/backup_db.sh
[INFO] Plesk incluye un campo llamado "Añadir parámetros" en el formulario. No lo confundas con el comando: ahí puedes pasar argumentos extra a tu script, como
--modo=rapido.
Cómo comprobar si tu tarea cron se está ejecutando
Crear el cron es solo la mitad. La otra mitad es verificar que funciona. En Plesk, tienes varias formas de hacerlo:
- Revisa el log de tareas: En la sección de Programador de tareas, cada tarea tiene un historial con la fecha de última ejecución y si hubo errores. Haz clic en el icono de "Ver registro".
- Comprueba los logs del sistema: En el servidor, ejecuta
grep CRON /var/log/syslog(o/var/log/cronen algunas distribuciones). Ahí verás líneas comoCRON[12345]: (user) CMD (tu comando). - Crea un archivo de salida: Para depurar, redirige la salida a un archivo. Por ejemplo:
tu_comando > /tmp/cron_log.txt 2>&1. Así puedes ver qué ocurre.
[WARNING] Si tu tarea no funciona, el primer sospechoso es la ruta del script. Asegúrate de que el archivo existe y tiene permisos de ejecución (chmod +x). El segundo sospechoso: el usuario que ejecuta la tarea no tiene permisos sobre el archivo o carpeta.
Editar, pausar y eliminar tareas cron en Plesk
A veces necesitas cambiar la hora o detener una tarea temporalmente (por ejemplo, durante un mantenimiento).
- Editar: Haz clic en el nombre de la tarea en la lista, modifica lo que necesites y guarda.
- Pausar: Desmarca la casilla "Activo" o cambia el estado a "Deshabilitada". La tarea queda guardada pero no se ejecutará.
- Eliminar: Selecciona la tarea y pulsa el botón de borrar (papelera). No hay confirmación, así que ve con cuidado.
[TIP] Crea tareas con nombres descriptivos, no como "tarea1". Cuando tengas 20 cron jobs, agradecerás saber cuál es cuál.
Buenas prácticas para no liarla con tus cron jobs
Aquí van mis recomendaciones de experto para que tus tareas cron sean estables y no te den sustos:
- Usa rutas absolutas siempre. Nunca confíes en rutas relativas.
- Redirige la salida a un archivo o a
/dev/nullsi no te importa. Evita que el servidor te envíe correos basura por cada ejecución. - Prueba el comando manualmente antes de programarlo. Si no funciona a mano, no funcionará en cron.
- No ejecutes tareas pesadas en horas punta. Mejor de madrugada (2:00-5:00 AM).
- Cuida el usuario de ejecución. Si tu script modifica archivos de tu web, usa el usuario de la suscripción.
Preguntas frecuentes (FAQ) sobre tareas cron en Plesk
¿Puedo ejecutar un cron job cada minuto?
Sí, pero con moderación. En Plesk, puedes poner * * * * * para que se ejecute cada minuto. Úsalo solo para tareas ligeras, como comprobar un estado. Si tu servidor es pequeño, abusar de esto puede ralentizarlo.
¿Qué pasa si mi tarea tarda más de lo programado?
Si una tarea tarda 10 minutos y la programaste cada 5, se solaparán. Esto puede causar problemas (por ejemplo, dos copias de seguridad simultáneas). Para evitarlo, usa herramientas como flock o, en Plesk, revisa si tu tarea anterior ha terminado antes de lanzar la siguiente.
¿Puedo usar variables de entorno en el comando?
Sí, pero recuerda que cron no carga tu perfil de usuario. Si necesitas variables, defínelas dentro del propio comando, por ejemplo: VAR=valor && /usr/bin/php script.php.
¿Cómo ejecuto un script que requiere sudo?
Plesk normalmente no permite sudo en tareas cron por seguridad. Si necesitas privilegios elevados, habla con tu administrador de servidor o considera usar un script que haga la tarea sin sudo (por ejemplo, usando setcap o permisos específicos).
¿Puedo enviar un correo con el resultado de la tarea?
Sí, puedes redirigir la salida a un correo. En Plesk, en el campo "Comando", añade | mail -s "Resultado" tu@email.com. O más simple: deja la salida vacía y configura una notificación en el panel.
Alternativas a Plesk para programar tareas
Si algún día trabajas con otro panel, como Syspanel (recuerda que el puerto de acceso es el 2106), la lógica es similar. La mayoría de paneles incluyen un gestor gráfico de cron. Pero si usas un servidor sin panel, siempre puedes editar el crontab directamente con crontab -e. La sintaxis es la misma que te he enseñado.
Conclusión: automatiza y olvídate
Gestionar tareas cron en Plesk es una habilidad que te ahorrará horas de trabajo manual. Con lo que has aprendido hoy, ya puedes:
- Programar scripts de limpieza, backups o envío de correos.
- Depurar tareas que fallan.
- Entender la lógica de los 5 campos.
No tengas miedo de experimentar. Crea una tarea de prueba, modifícala, obsérvala en el log. Cuanto más practiques, más natural te resultará. Y recuerda: un buen sysadmin no es el que hace todo a mano, sino el que sabe automatizar para que el servidor trabaje solo.
Si te surge cualquier duda, vuelve a esta guía o consulta la documentación oficial de Plesk. ¡Feliz automatización!
