Tareas Cron

Cómo programar tareas automatizadas en cPanel

Las tareas Cron permiten automatizar determinados comandos o secuencias de comandos en la cuenta de cPanel de tu alojamiento web.

Puedes definir que un comando o una secuencia de comandos se ejecuten a una hora determinada dentro de un intervalo especificado.

Por ejemplo, podrías configurar tareas programadas y eliminar los archivos temporales semanalmente para liberar espacio de disco.

O por ejemplo, si gestionamos una Web de eventos deportivos.

Podríamos ejecutar un script los días de los partidos para que nuestra Web se conecte a otra que ofrece un servicio de actualización de los marcadores en tiempo real y poder así ofrecer los resultados en nuestra Web prácticamente en directo.

En servidores Linux estas tareas se denominan crontab.

1. Accedemos a Tareas Cron

Para gestionar nuestras tareas cron iremos al acceso de Cpanel – Tareas Cron

Accedemos a Tareas Cron en cPanel

2. Correo electrónico

Siguiendo el ejemplo de la web deportiva, vamos a suponer que tenemos un script llamado «marcadores.php«.

Deseamos ejecutar cada 5 minutos entre las 17 y las 24 horas los siguientes días: miércoles, jueves, sábados y domingos.

En el primer apartado «Correo electrónico Cron» veremos un apartado para introducir nuestro email. cPanel lo usará para enviarnos un email cada vez que sea ejecutado el script.

Esto nos puede servir para comprobar que el sistema realiza el trabajo adecuadamente.

Pero una vez comprobado es mejor desactivar esta opción ya que el buzón de nuestro email podría llenarse repentinamente y colapsarlo.

Más adelante veremos como evitar recibir estas notificaciones.

Correo electrónico para recibir detalles de las tareas cron ejecutadas

3. Agregar una nueva tarea Cron

En el siguiente apartado «Agregar una nueva tarea Cron» es donde indicaremos a cPanel el momento en que deseamos sea ejecutado nuestro nuevo script (día del mes o día de la semana).

Observamos que el primer desplegable contiene «Configuraciones comunes» que podemos usar en casos sencillos.

Por ejemplo vienen algunas configuraciones tipo: cada segundo, cada hora (hourly), diario (daily), semanal (weekly), mensual (monthly) o anual (yearly o annually).

Es sumamente fácil insertar los valores adecuados en los campos MINUTO, HORA, DÍA, MES Y DÍA DE SEMANA, desplegando las «Configuraciones comunes» y seleccionando la opción que más se ajuste a nuestras necesidades.

Pero nuestro ejemplo es algo más complejo, veamos sus ejecuciones:

  • Cada 5 minutos: esto es sencillo. Según el desplegable tenemos que introducir en el campo «MINUTO»: «*/5»
  • Entre las 17 y las 24 horas. En este caso debemos insertar en «HORA» lo siguiente: «*/17,18,19,20,21,22,23,0»
  • Diariamente (más adelante le diremos qué días exactamente). Introducimos en «DÍA» lo siguiente: «*»
  • Cada mes: en este caso sólo tendremos que insertar: «*»
  • Los miércoles, jueves, sábados y domingos. En este caso introduciremos en el campo «DÍA DE SEMANA»: «3,4,6,0»(de lunes a domingo: 0-6 siendo 0 el domingo).
    Bien, hasta aquí ya tenemos nuestro calendario organizado. Para que nuestro script sea ejecutado los miércoles, jueves, sábados y domingos, cada 5 minutos. Empezando desde las 5 de la tarde hasta las 12 de la noche. Sólo nos resta introducir en la línea «Comando» la instrucción apropiada que cPanel ejecute nuestro script.

Vamos a suponer que tenemos el archivo «marcadores.php» (nuesto script) instalado en nuestra Web Joomla! en el directorio «cron». Por lo tanto la sentencia a insertar sería la siguiente:

php -f /home/mi-usuario-cpanel/public_html/crontab/marcadores.php

(sin olvidar sustituir «mi-usario-cpanel» por nuestro usario real).

Debemos tener en cuenta que hay que poner la ruta real relativa a nuestro panel de control donde el script o archivo que queremos ejecutar está ubicado.

En este caso está dentro de la carpeta «public_html» que es el raíz de nuestro hosting y la carpeta «crontab».

Según donde esté ubicado nuestro archivo esta ruta cambiará.

Ahora pinchamos en el botón «Agregar nueva tarea de Cron» y veremos debajo de «Tareas Cron actuales» que se ha incluido nuestra nueva tarea.

Con esta última opción, el archivo crontab de cPanel habrá quedado configurado.

Agregar tareas Cron en cPanel

4. Desactivar avisos de ejecución

Una vez que hayamos comprobado el correcto funcionamiento, podemos desactivar la opción del envío por email de la confirmación que envía cPanel cada vez que el archivo es ejecutado.

Para ello pinchamos en «Editar» a la derecha de nuestra tarea y en el apartado «Tareas de Cron actuales». Se despliega la tarea y en el apartado «Comando» añadimos al final la frase «>/dev/null 2>&1«, quedando nuestro comando como sigue:

php -f /home/mi-usuario-cpanel/public_html/crontab/marcadores.php >/dev/null 2>&1

(sin olvidar sustituir «mi-usario-cpanel» por nuestro usario real)

De esta forma, se ejecutarán, pero no recibiremos notificaciones en nuestra dirección de correo electrónico.

Lo ideal será recibir las notificaciones para comprobar que se está ejecutando, pero esto dependerá de la periodicidad que le demos al trabajo automatizado ya que si la frecuencia de ejecución es muy alta recibiremos muchas notificaciones en nuestro buzón de correo.

Desactivar avisos de ejecución del cron

 

5. Ejemplos de cronjobs en cPanel

A continuación te mostramos algunos ejemplos de los cronjobs que puedes usar en tus distintos cms usando: php, curl o wget:

  • Para ejecutar un archivo php de manera interna:

php -q /home/tusuariocpanel/public_html/carpeta/crons/cron.php >/dev/null 2>&1

  • Ejecutar un cron usando curl para ejecutar una url externa al directorio de cPanel:

/usr/bin/curl --user-agent cPanel-Cron "https://tudominio.com/archivo.php?token=xxxxxxxx"

  • Usar wget para descargar un archivo de una url externa.
  • (IMPORTANTE: usa siempre el parámetro «–delete-after» para no dejar archivos en el servidor y agotar tus inodes.

wget -q -O /dev/null --delete-after "https://www.tudominio.com/directorio/archivo.php"

Publicado en ,
Avatar para Tropical Server

Tropical Server

Alojamiento Web especializado en Joomla!, Wordpress, Prestashop y Moodle. Servicios de hosting en la nube. Servidores VPS y Dedicados.