martes, 11 de junio de 2013

Programando acciones con cron

Linux tiene un poderoso programador de tareas que nos permite lanzar cualquier aplicación para que se ejecute automáticamente en un momento determinado. Ya sea en una fecha fija, determinados días de la semana, a determinadas horas del día...

Esa herramienta se llama cron, y utilizarla es sencillo y rápido.


Lo primero que vamos a aprender es a ver las tareas que ya están programadas, si es que existe alguna. Es tan sencillo como ir a la terminal y escribir....
  • crontab -l

Y esto nos devuelve algo parecido a...
30 0 * * *    /root/bin/scanantivirus.sh >> /home/clamavinfected/logfile.log 2>&1
15 0 * * *    /root/bin/movescanner.sh >> /home/samba/scannerold/logfile.log 2>&1
Tranquilo, no es chino. Te explico que quieren decir todos esos numeritos,  asteriscos y demás.

  1. Primero hay que poner el minuto concreto en que se ejecutara el comando. Si no queremos especificar un minuto concreto, ponemos un asterisco.
  2. Luego ponemos la hora, en formato de 24 horas. En el ejemplo, un comando se ejecutaría a las 0:30 horas y el otro a las 0:15 horas. También aquí podemos cambiar la hora por un asterisco si no queremos una hora concreta.
  3. Luego programamos el día del mes en que queremos ejecutar el comando. Aquí queremos que se ejecute todos los días, por lo que en lugar de poner un día concreto, ponemos un asterisco, pero podemos decir que se ejecute el día 8 de cada mes, por ejemplo.
  4. A continuación especificamos el mes en que ejecutar el comando. Como queremos que sea todos los meses y no uno concreto, ponemos un asterisco.
  5. Por último especificamos el día de la semana ( 0=domingo, 1=lunes...) para especificar si queremos que el comando se ejecute un día concreto. 
  6. Y a continuación, tenemos el comando a ejecutar.


Podemos realizar cualquier combinación que se nos ocurra. Podemos ejecutar algo un día a una hora concreta, o los lunes a las 7 de la mañana o todos los días de agosto a la hora en punto...

Pero aquí solo estamos viendo lo ya programado. ¿Como añadimos alguna programación? Pues muy sencillo
  • crontab -e

Nos preguntara que editor queremos utilizar, y una vez elegido el que prefiramos, podemos añadir las lineas que nos sean necesarias como si estuviéramos editando un fichero de texto cualquiera.

Pero aún podemos complicarlo un poco. En cada campo, podemos poner un numero o un asterisco si queremos un dato concreto o cualquiera. Pero ¿y si queremos que un informe se genere a las 2 y a las 14? ¿Tenemos que programar dos lineas casi iguales? ¡No! 

Si por ejemplo queremos que algo se ejecute cada 10 minutos, en el espacio destinado a los minutos pondremos */10. O si queremos que se haga cada hora, en el espacio destinado a las horas, pondremos */1.

Y si lo que queremos es ejecutar un comando a varias horas concretas, en el espacio de las horas pondremos estas, separadas por comas. Algo así como 2,14

¿Sencillo? 

Si

¿Potente?

Mucho

No hay comentarios:

Publicar un comentario

prekes sodui