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
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
