Ir al contenido principal

Automatizar tareas a través de CRON en Red Hat

A manera de resumen antes de entrar en profundidad, CRON es el "demonio" o servicio encargado de ejecutar scripts, tareas, o como lo quieran llamar en una fecha y hora determinada. Hoy quiero comentar este proceso en el sistema operativo Red Hat. Es util para los administradores de servidores puesto que le permite despreocuparse de los backups y otras tareas de administración. No quiero decir con esto que cualquier usuario no lo pueda usar para realizar sus backups, esta integrado en el kernel asi que en cualquier linux existe. "Este es el poder de Linux".

Entrando en materia hay un demonio denominado crond que por defecto se inicia con el comando.

usuario@redhat#/etc/init.d/crond start

Por defecto inicia con el sistema operativo pero uno nunca sabe :). Su archivo principal de configuración esta ubicado en /etc/crontab en su interior se muestran los run-parts que se ejecutan cada hora, cada dia, cada mes. Esto indica que por ejemplo dentro de los servicios que se ejecutan diarimente hay uno que se llama "logrotate" que es un script para empaquetar los log del /var/log.

Para nuestro servicio podemos emplear "crons" por cada usuario. Estos correrán segun se personalicen con minuto, hora, dia, mes. en la siguiente imagen un ejemplo de la estructura de cada linea del cron.


Espero que el ingles de la imagen no les incomode. La verdad es que los * son comodines y pueden ser remplazados por fechas y horas especificas con ese formato.

Ej. Copiar el archivo prueba todos los lunes a las 3:30 a.m. del directorio de usuario a usuario2
30 3 * * mon usuario cp /home/usuario/prueba /home/usuario2/

Correr un scritp el primer dia de cada mes a las 4:10 a.m.
10 4 1 * * usuario /root/scripts/backup.sh

La claridad importante es que para colocar crons en /etc/crontab debo tener permisos de root, de lo contrario solo se podra leer y no modificar.

¿Que pasa entonces si un usuario sin privilegios desea automatizar una tarea?. Linux siempre piensa en todo, hay un comando que es el crontab [opción]. A continuacion coloco la ayuda del comando.

usuario@redhat$crontab
usage: crontab [-u user] file
crontab [-u user] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)

La ayuda aunque parece confusa es bastante simple. Lo primero es que puedo agregar un archivo de cron con el comando crontab -e. Una vez este comando se ejecuta aparecera una pagina nueva de nano(Editor en line a de comando) y puedo introducir una linea exactamente igual que lo haria en el /etc/crontab

Una vez guardado el archivo puedo revisar que efectivamente este incluido la linea recientemente editada.

usuario@redhat$crontab -l

En caso que este cron no ya no sea necesario lo puedo suprimir con el comando

usuario@redhat$crontab -r

En caso que tenga muchas lineas, con el comando anterior estaré eliminando todas, asi que se debe
tener cuidado con su ejecución.

Hay muchos asuntos especificos y profundos que se pueden realizar con ayuda de cron, pero esta solamente
es una referencia basica.

Entender estos conceptos me fue de utilidad.

Comentarios

Entradas más populares de este blog

Creando relaciones de confianza entre maquinas Linux por SSH

He buscado muchas veces sobre este mismo tema asi que hoy he decidido documentarlo para su posterior uso. De manera general una relación de confianza entre maquinas se establece con el objetivo de evitar la digitación de contraseña para acceso por terminal (ssh). Es decir que yo pueda acceder a una maquina y esta revise entre sus known_host (lista de equipos conocidos) y me permita acceso. Otra funcion importante es que se pueda realizar sincronizaciones mediante rsync y programadas por Cron evitando la intervención del usuario. Ahora si el procedimiento tecnico. Este proceso lo realize entre dos maquinas linux con sistemas operativos Ubuntu y Red Hat respectivamente. En el caso de la maquina con Ubuntu, escogi el usuario sobre el cual deseo crear la confianza. Este procedimiento hay que hacerlo con cada usuario en el cual desea evitar digitar la contraseña puesto que son entidades independientes con privilegios distintos dentro del S.O. usuario@ubuntu$ ssh-keygen - t rsa --

Configuración de una agregación de puertos (Link Aggregation) entre un switch HP 5500-48G EI y un DELL 6348

Las agregaciones de puertos nos permiten aumentar el ancho de banda de la conexión entre dos dispositivos, generalmente switches. En este caso puntual haré referencia a la configuración de una agregación de puertos entre un switch HP 5500-48G EI y un DELL 6348.  Luego de verificar con el soporte técnico (DELL), se encontró que la agregación dinámica no funciona correctamente por lo tanto fue necesario recurrir a la agregación estática. La agregación estática tiene como mayor diferencia que no utiliza el protocolo LACP ( Link Aggregation Control Protocol ). Sin más detalles la configuración en ambos switches: Configuración del switch DELL - Agregación de 4 puertos Giga para un ancho de banda total de 4Gbps Se crea un port-channel o un puerto lógico: interface port-channel 4 switchport mode trunk Cada una de las interfaces participantes de la agregación se configura con el número del grupo del port-channel: interface Gi1/0/33 channel-group 4 mode on swi

Ejercicio Condicionales usando Macros en Excel

La toma de decisiones es determinante en la secuencia de ejecución de una macro. Las herramientas que proporciona VBA para la toma de decisiones descansan en los condicionales. Un ejemplo de estructuras condicionales en Excel es la función "SI", la cual permite hacer una prueba lógica y tomar generar dos resultados posibles dependiendo si la prueba lógica es verdadera o falsa. "SI su estatura en metros es superior a 1.5 mts, puede ingresar a la montaña rusa, de lo contrario NO" . En la afirmación anterior solo aquellos niños con una estatura superior a 1.5 tendrán acceso al juego mecánico, los demás niños simplemente estarán excluidos del juego hasta que cumplan el requisito de forma imperativa. El lenguaje de macros permite 3 estructuras condicionales distintas: a) IIF(prueba_lógica, verdadero, falso). Su resultado obligatoriamente debe asignarse a una variable variable = IFF(3>1, "Verdadero", "Falso"). El tipo de variable p