Tareas programadas en linux

De ChuWiki
Saltar a: navegación, buscar

Linux tiene un demonio cron que normalmente se ejecuta en el arranque de linux. Este demonio despierta cada minuto, mira si tiene que ejecutar alguna tarea, la ejecuta y se duerme. Si queremos que algún comando o tarea se ejecute automáticamente cada cierto tiempo, la forma de hacerlo es indicándole a este demonio que lo haga.

Hay varios ficheros en el sistema operativo y para cada ususario en el que este demonio busca tareas para ejecutar. Uno de ellos es /etc/crontab. El formato de este fichero es

minuto hora dia_del_mes mes dia_de_la_semana usuario comando

Donde minuto, hora, dia_del_mes, mes y dia_de_la_semana son lo que parecen, a qué hora, minut, etc se debe ejecutar el comando. En estos campos se pueden poner comodines y hay varios formatos. Por ejemplo, un * en minuto es en todos los minutos.

* 4 * * *    significa todos los minutos de las cuatro de la madrugada, todos los días, todos los meses. Es decir, se ejecuta 60 veces a las 4:00 am, 4:01 am, ... 4:59 am y ya no más hasta el día siguiente.

También se pueden poner rangos o valores discretos, así

10,20,30 * * * * significa todos los días a todas las horas en los minutos 10, 20 y 30, es decir, a las 0:10 am, 0:20 am, 0:30 am, 1:10 am, 1:20 am,  etc, etc.
*/15 10-14 * * * significa cada 15 minutos entre las 10 am y las 2 pm (las 14). 

y así un largo etcétera.

Un ejemplo concreto de lo que puede haber en un crontab

0 0 * * 6 root rm -rf /home/usuario/temp

borraría todos los sábados (día 6) a las 0:00 horas el directorio /home/usuario/tmp.

Un usuario puede crear sus propias tareas y añadirlas a cron. Para ello, en cualquier ubicación crea un fichero similar a crontab con el nombre que quiera y sin poner el usuario. Por ejemplo

0 11 * * 1-5 avisameParaElCafe.sh

ejecutaría todos los días de lunes a viernes (1-5) a las 11:00 am el comando "avisameParaElCafe.h". Si este fichero se llama mi_cron, entonces para añadir estas tareas al demonio de cron hay que ejecutar el comando

crontab mi_cron

por supuesto, suponiendo que el usuario tiene permisos para hacer esto.