> Manuales > Ayudas técnicas

Como realizar una tarea programada, en la que se invoque una página web cada cierto tiempo por si sola, en Linux con Cron y wget.

Hay veces que para un desarrollo necesitamos ejecutar una página cada día o cada hora, para realizar periódicamente unas tareas de mantenimiento. Podemos hacer que esas tareas se puedan ejecutar por si solas, sin que tengamos que intervenir para nada, a través de una tarea programada.

Una tarea programada nos ahorrará estar pendientes de un proceso que se tenga que realizar todos los días y además nos dará la tranquilidad de saber que no se nos va a olvidar realizar la tarea periódica, porque está programada automáticamente.

Por ejemplo, una tarea periódica que es típica es el mantenimiento de un servidor OpenAds (antes PhpAdsNew). Este servidor tiene que realizar unas tareas de mantenimiento cada poco tiempo, para revisar las prioridades de entrega de banners y hacer una caché con los banners que se están distribuyendo en un momento dado. De hecho, este tema de las tareas programadas lo he aprendido justamente configurando PhpAdsNew. Pero en general luego he visto que las tareas programadas son muy interesantes y las he configurado para el mantenimiento de otros sitios web de la empresa.

Estas tareas se pueden programar en un servidor Linux a través del Cron, que es un demonio (daemon) que puede tener una lista de tareas para ejecutar. Veremos como configurar una tarea en Cron para que se llame y se ejecute una página web que será encargada de hacer las tareas de mantenimiento.

1.- Extraer tareas programadas actualmente en el sistema con Cron

Primero tenemos que saber si existen tareas programadas anteriormente en el sistema, con el demonio Cron. Porque si es así debemos asegurarnos que no perdemos ninguna de las tareas al agregar la nueva.

Para extraer todas las tareas programadas en Cron en Linux, desde línea de comandos lanzamos esta instrucción:

crontab -l > cron.txt

Con esto se nos creará un archive llamado cron.txt donde se almacenarán todas las tareas programadas, si es que las hay. Si no hay tareas, simplemente se creará el archivo vacío.

2.- Editar el archivo para introducir la tarea programada

Luego podemos editar el archivo para escribir el comando que ejecutará la tarea que deseamos procesar periódicamente. Para editar un archivo en Linux utilizaremos un editor de textos como Vi o Joe.

Yo prefiero usar Joe, porque el vi es muy complicado y no recuerdo sus particularidades. El editor Joe, para editar el cron.txt, se invocaría así:

joe cron2.txt

Una vez dentro del editor, podemos hacer los cambios en el fichero de texto. Para introducir una tarea se tiene que crear una nueva línea en cron.txt con el comando de la tarea.

Vamos a programar una tarea que simplemente ejecuta una página web, utilizando el comando wget. La línea de la tarea tendrá una forma parecida a esta

0 * * * * wget -q -O /dev/null http://www.dominio.com/mantenimiento.php

(Por si no se lee bien, el primer carácter es un cero y luego hay más adelante un -O que es una letra "o" mayúscula.)

Con Joe, para guardar los cambios se hace con CTRL + K D. (Apretando la tecla control, pulsamos K, y sin dejar de apretar CTRL luego pulsamos D.)

Para salir de Joe pulsamos CTRL + C.

Para obtener ayuda, con una lista de todos los comandos disponibles, pulsamos CTRL + K H.

3.- Cargar la nueva lista de tareas a Cron.

La lista de tareas que hemos colocado en cron.txt la tenemos que volver a introducir dentro de Cron., para que se de por enterado de las nuevas acciones que tiene que realizar periódicamente.

Utilizaremos el siguiente comando Linux:

crontab cron.txt

Con eso la lista de tareas programadas se cargará en el demonio cron y se ejecutarán periódicamente.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual