Print This Page  
Introduce la direccion de mail:

Quiero configurar el cron para que se ejecuten ciertas tareas

Es posible que alguna vez necesites que una tarea se ejecute cada cierto tiempo o que se ejecute varias veces al día a determinadas horas. En sistemas Unix/Linux eso se consigue con una utilidad llamada Cron.

Su uso es sencillo, pero requiere tener ciertos conocimientos de manejo de shell unix.

Cron es el programa con el que generar el crond (abreviatura de "cron daemon"). El crond en sí es lo que en el mundo Unix/Linux se conoce como un daemon (un proceso que se está ejecutando todo el tiempo en el sistema) y que lee en unos ficheros definidos para cada usuario las tareas a llevar a cabo.

Para poder programar estas tareas, lo que debes hacer es lo siguiente. Primero, iniciarías una sesión ssh con tu dominio. Puedes utilizar programas como Putty, que puedes descargarte de la siguiente dirección http://www.chiark.greenend.org.uk/~sgtatham/putty/.

En el momento en que la hayas establecido, te aparecería una pantalla similar a la siguiente:

Lo primero que debes hacer si quieres configurar una tarea en la lista de tareas del Cron es introducir esa tarea en un fichero, lo cual puedes hacer mediante el comando vi nombrefichero, de la siguiente forma:

Con esa instrucción se abrirá un editor de texto (el editor vi, en este caso) abriendo automáticamente ese fichero predefinido para el usuario. Las tareas en el Cron se insertan por líneas, de forma que si quieres insertar 4 tareas, tendrás que poner 4 lineas en el fichero. Cada una de esas líneas sigue unos parámetros que le indican al crond cada cuanto tiempo tiene que ejecutarse esa tarea, los días que tiene que ejecutarse, etc...

Una línea del crond tiene el siguiente formato:

minuto     hora      dia_mes      mes      dia_semana      comando

de forma que estableces el minuto/hora del día a la que quieres que ejecute el comando, el día del mes, el mes del año e incluso el día de la semana. Por ejemplo, si quisieras ejecutar un comando llamado ls (que sirve para listar directorios) todos los días a las 10:30 de la mañana, pondrías esta línea en el crond:

30 10 * * * /bin/ls

Observa que para los parámetros que no tienen opción, se introduce un "*", que simboliza que no le vamos a dar un valor específico a ese parámetro, por lo que lo ejecutara para todos los posibles valores de ese parametro. En este caso todos los días del mes, todos los meses del año y todos los días de la semana.
Para ejecutarlo cada hora, a las medias (0:30, 1:30,...), el día 24 de cada mes, la línea sería la siguiente:

30 * 24 * * /bin/ls

Fíjate también que al fichero le damos la ruta entera a donde está, que en tu caso será /home/tuusuario/fichero.

A continuación explicaremos cómo tendrías que hacer para introducir en el crond una entrada para un fichero que quieres que se ejecute el día 1 de cada mes y otra que se ejecute todos los lunes.

A partir de aquí tienes que seguir los siguientes pasos:

  • Pulsar la letra "i" para entrar en el Modo de Edición del editor, y así poder escribir en él.
  • Una vez entrado en el modo de edición, ya puedes escribir como en cualquier editor normal, por lo que insertarías la entrada correspondiente para el crond, como por ejemplo: 

 

  • Observa que en el ejemplo hay varias líneas que comienzan con el caracter "#"; esas líneas no son procesadas posteriormente por el Cron. Son comentarios que se pueden añadir para luego saber qué tienes puesto en el crond. Es recomendable incorporar una linea como la del primera del ejemplo para que luego recuerdes lo que simboliza cada parámetro, y una linea como la segunda del ejemplo que explique qué tarea realiza la linea que acabas de introducir en el Cron.

Una vez acabes de meter la entrada, has de pulsar esta secuencia de botones para que el fichero se guarde correctamente:

Presiona la tecla Escape (en el teclado arriba a la izquierda, ESC)

  • Escribe :wq (verás que se escribe abajo de todo en la pantalla, a la izquierda; es lo normal en este caso)
  • Pulsa Intro/Enter

 

Una vez hecho esto, ejecutarás el comando crontab /home/usuario/nombretareas para añadir esas tareas al cron:

Para poder salir de la sesión ssh, ejecuta el comando exit.

Siguiendo estos sencillos pasos podrás añadir tareas programadas dentro de tu Hosting.