Automatizar tareas en Linux... (crontab)

Una de las tareas que mejor podemos hacer en Linux y que es uno de sus grande fuertes es el poder automatizar tareas cotidianas, como hacer backup, enviar correos, hacer mantenimiento a bases de datos o chequear que tu ip cambio y mandarte una notificación por correo, que se yo cualquier cosa. Que se pueda automatizar hay esta Linux para hacerlo y la instruccion es crontab lo maximo...

crontab.-

Es una instruccción que nos permite automatizar, tareas dentro de linux cabe destacar que cada usuario puede establecer tareas particulares para el sistema, las cuales por permisologia solo las podra ver el y el su defecto el ROOT (Administrador de Linux).
Possé comandos o instrucciones básicas como (Formatos):

crontab -l Esto muestras todas las tareas que el usuario tiene programado, si es ejecutado como root (Administrador del sistema), podrá en su defecto ver todas las tareas programadas en el sistema de cualquier usuario.
crontab -e Esto activa el editor de crontab, el cual le permitira generar o escreibir las tareas que necesite programar o automatizar dentro del sistemas.
crontab file [-u user]
crontab - [-u user]
crontab -l [user]
crontab -e [user]
crontab -d [user]
crontab -c dir

De los diferentes formatos podemos ver que file es el nombre de un archivo que contiene los comandos de crontab ,user es el nombre del usuario y dir es el directorio donde se encuentran los archivos crontab de cada usuario.

Algo importante que tenemos que tener en mente es el formato en que se escriben los cronjobs:

Argumentos:

Las entradas de crontab dictan a cron que corra comandos en intervalos regulares. Cada entrada de una solo línea en el archivo crontab tiene el siguiente formato:

min hrs day-of-month month weekday cmd

Los espacios separan los campos, pero el último campo, cmd, puede contener espacios en blanco.

Los primeros cinco campos especifican el tiempo en el cual cron deber de ejecutar el comando. Su significado se describe a continuación:

Campo Significado Rango
mins Los minutos después de la hora 0 - 59
hrs La hora del día 0 - 23 (0 es media noche)
day-of-month El día del mes 1 - 31
month El mes del año 1 - 12
weekday El día de la semana sun - sat

La entrada en cualquiera de estos campos puede ser un solo número, un par de números separados por un guión, indicando un rango de números, una lista de números y rangos separados por comas, o un asterisco (Este significa todo las opciones si coloca * en el campo de month la tarea se ejecutara todos los meses).

Si una línea empieza con el signo #, cron lo trata como un comentario y lo ignora. Esta es una manera fácil de desabilitar temporalmente alguna entrada, sin tener que eliminarla por completo.

Opciones Descripción
-u Con esta opción especificamos el usuario del cual estamos modificando, añadiendo o eliminando trabajos de cron.
- Esta opción especifica acrontab que debe leer los comandos desde la entrada estándar.
-l Esta opción se lista el archivo crontab de user.
-e Esta opción permite editar el archivo crontab de user.
-d Esta opción borra el archivo crontab de user.
-l Esta opción especifica el directorio donde se encuentra el archivo crontab de user.

Notas

El programa crontab se comunica con crond a través del archivo cron.update el cual reside, generalmente, en el directorio /var/spool/cron/crontabs. A este archivo se le añade el nombre del archivo crontab modificado o borrado, el cual es leído por crond para resincronizar la representación interna del mismo.

Un archivo crontab de un usuario normal está limitado a 256 entradas, las cuales se componen de líneas de no más de 1024 caracteres cada una, incluyendo el retorno de línea.

Crond siempre se sincroniza cada minuto, checando la hora actual con los posibles trabajos.

Crontab usa /usr/bin/vi o el editor especificado en la variable de ambiente VISUAL para editar el archivo crontab.

El comando a ejecutarse se invocara de la siguiente manera /bin/sh -c y puede contener cualquier comando válido de Bourne shell. Además es común redireccionar la salida y el error estándar. Si no se especifica dicho redireccionamiento y el comando genera resultados a la salida o error estándar, estos serán enviados por correo al usuario al que le pertenece dicho crontab.

Ejemplos:

En el siguiente ejemplo, root define un comando para ser ejecutado por cron cada hora y toda la salida generada se añade al archivo de log

# crontab - root 0 * * * * finger >>/var/log/messages 2>&1
CONTROL - D

En el siguiente ejemplo,se define un comando, propiedad de usuario, para ser ejecutado por cron cada dos horas de 11 p.m. a 7 a.m. y a las 8 a.m.

# crontab - usuario 0 23-7/2,8 * * * /usr/bin/find / -name core -exec rm {} \;
CONTROL - D