España // elmundo.es

martes, 10 de mayo de 2011

Usando crontab LINUX

Crontab es una herramienta indispensable para el administrador de sistemas, su principal función, radica en la automatización de tareas dentro de nuestro servidor.

¿Que es Crontab?
Crontab permite programar lo que podemos denominar como “crones”, que no son ni mas ni menos que tareas que se ejecutarán en “x” momento determinado según nuestro criterio de especificación.

Linux se guia por el evento de reloj del sistema, y si existe alguna tarea que nosotros hayamos programado para ejecutarse el sistema mismo la ejecuta sin que usuario alguno lo haga manualmente.

Ejemplos del uso que le podemos dar a Crontab:
  • Darnos mensajes para recordarnos eventos, cosas importantes que no debemos olvidar, programando esto por pantalla o también podemos auto-enviarnos un email.
  • Apagar un equipo a la hora que nosotros queramos, por ejemplo, nos vamos a dormir y dejamos la computadora bajando cosas de internet y le decimos que a las 5 de la mañana se apague automaticamente.
  • En el caso de servidores, algo muy útil es el auto envio de estado de los sistemas, si tienes muchos servidores, puedes realizar escaneos con diferentes herramientas como nmap, tripwire etc y auto-enviarte esos datos en vez de correrlos todos los días sobre los sistemas que administres para ver si hubo intrusiones, etc.
  • Para realizar backups, se puede programar un cron que a cierta hora de cierto dia de la semana realize un backup de todos los datos que creas necesarios.
Especificaciones
Crontab nos deja programar una tarea para que se pueda ejecutar especificando los siguientes parámetros:

  • La hora (0-23)
  • Los minutos (0-59)
  • El día del mes (1-31)
  • El día de la semana (0-7: tanto 0 como 7 representan el día Domingo)
  • El mes (1-12)
——————————————————————————————————————
*     *   *   *    *  comando_a_ejecutar
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +—– dia de la semana (0 – 6) (Domingo=0)
|     |     |     +——- mes(1 – 12)
|     |     +——— dia del mes (1 – 31)
|     +———– hora (0 – 23)
+————- minuto (0 – 59)
——————————————————————————————————————

 
Además de estos parámetros, Crontab también cuenta con:
  • *. ¿que hace el asterisco? El asterísco le dice a Crontab que debe ejecutarse la tarea en todos los minutos, todas las horas, días, semanas, meses.
  •  Listas: las usaremos para poder definir “2,20″ por ejemplo en la columna correspondiente a los días del mes, para que la tarea se ejecute los días 2 y 20 de cada mes.
  • Rangos: otra útil función, especificación de rangos de días por ejemplo, especificamos de la siguiente forma: “4-6″ en la columna días que hara que se ejecute la tarea desde el Jueves (día 4) hasta el Sábado (día 6).
Al igual que todo el sistema Linux, Crontab también se maneja de la misma forma: cada user tendrá su propio crontab, esto también incluye a root.

Cada usuario podrá especificar el tipo de tarea programada, pero por ejemplo si un usuario normal de sistema trata de apagar el servidor que lo administra, no podrá hacerlo, solo el crontab de root podrá ejecutar tal tarea.

Manejo general del comando
$ crontab -l
Editar nuestras tareas programadas en el Crontab:
$ crontab -e
Aquí se abrirá un editor de texto, tal vez vim, pico o emacs, según cual hayamos especificado como default. Desde el editor vamos a poder añadir lineas al fichero crontab, una linea por cada tarea que deseemos programar.

Borrar toda nuestra programación de tareas con:
$ crontab -r
El formato de entradas
Cuando añadamos una entrada a nuestro crontab, lo haremos en una sola línea y con el siguiente formato:
[minutos] [hora] [día] [mes] [dia_de_semana] [comando]
Ejemplo simple de backup
Haremos un tar.gz del directorio “movies” (como backup, por ejemplo), todos los días Lunes a las 14 horas.
0 14 * * 1 tar -cvpzf /home/jeropa/backup.tar.gz /usr/movies/
Fuente

1 comentario: