Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.

A continuación una recopilación de comandos y utilidades para mostrar informacion del sistema en Linux, tales como espacio libre en disco, uso de la memoria ram, etc.. Todos ellos usando como filtrado el comando awk y grep para buscar patrones con expresiones regulares. Sin duda algo necesario.

Status Servidor

El primer ejemplo es vamos a comprobar desde cuando nuestro server lleva levantado. Esto lo vemos con el comando

uptime

Que nos devolverá algo como esto:

06:30:16 up 20:10, 1 user, load average: 0.00, 0.00, 0.00

La información que muestra es la hora del server, el estatus (up) y el tiempo que lleva levantado, el usuario y la carga media. Pero vamos a decir que solo necesitamos el dato del tiempo que lleva levantado. Como lo conseguimos?

uptime | awk {'print $3'}

Con esto conseguiremos: 20:10,

Bueno en este ejemplo nos muestra la coma adicional. Vamos a quitarla.

uptime | awk {'print $3'} | awk 'match($0,","){print substr($0,RSTART-1,5)}'

Y ya al final obtenemos: 20:10. Perfecto! Esto ya podemos enviarlo por mail o montar la alerta que queramos.

Pero vamos a hacerlo más bonito Aún. Vamos a hacer un expresión regular que presente los datos como lo haría un nagios o un cacti. Mostrando algo como: 20 Horas y 10 Minutos.

echo Uptime: `uptime | awk {'print $3'} | awk 'match($0,":"){print substr($0,RSTAR-1,2)}'` Horas y`uptime | awk {'print $3'} | awk 'match($0,":"){print substr($0,RSTART+1,2)}'` Minutos

Mucho más pro.

Memoria Ram

Vamos a ver ahora ejemplo para recopilar información de la memoria ram.

Si ejecutamos el comando

free

No muestra el consumo de la memoria ram.

total       used free shared    buffers     cached
Mem:           512         94        417          0          0          0
-/+ buffers/cache:         94        417
Swap:            0          0          0

Vamos a decir, que queremos obtener la memoria usada de los buffers y cache.

echo `free -m | grep '+' | awk {'print $3'}`MB

Esto nos devolvería: 94MB

Ahora vamos a recoger el dato de toda la memoria disponible

echo `free -m | grep 'Mem:' | awk {'print $2'}`MB

El resultado sería: 512MB

Ahora vamos a combinar los 3 tipos de datos de la memoria y obtener un porcentaje de uso de ésta.

echo "Memoria usada: $((`free -m | grep '+' | awk {'print $3'}`*100/`free -m | grep 'Mem:' | awk {'print $2'}`))% (`free -m | grep '+' | awk {'print $3'}`MB) de`free -m | grep 'Mem:' | awk {'print $2'}`MB Disponible"

Esto devolverá: Memoria usada: 18% (94MB) de 512MB Disponible

Uso Disco Duro

Bueno ahora vamos a hacer ejemplos con uso de Disco duro.

Para ver el uso de los discos duros y particiones. Usamos el comando

df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/simfs 10G  1.4G  8.7G  14% /
none                  256M  4.0K  256M   1% /dev

Si queremos mostrar menos datos, enfocando tan solo en los datos de la particion, el porcentaje y la memoria usada y la memoria total, tendríamos que ejecutar la siguiente regla

echo "`df -h | grep '/dev/simfs' | awk {'print $6'}`    `df -h | grep '/dev/simfs' | awk {'print $5, $4, $2'}`"
echo `df -h | grep 'none' | awk {'print $6, $5, $4, $2'}`

Que nos daría como resultado:

/ 14% 8.7G 10G
/dev 1% 256M 256M

5 opiniones en “Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.”

  1. hola estoy aprendiendo un poco de esto de linux y buscando el comando awk porque me lo enseñaron en clase pero no lo entendi nada y buscando por aca en internet estoy comprendiendo como funciona y ahora que entendi un poco, justo con este ejemplo se me ocurrio una variante para esto
    uptime | awk {‘print $3’}

    que seria
    uptime | awk {‘print $3’} | cut -d, -f1
    entonces con solo cut arreglamos lo de la coma

  2. La sintaxis para obtener “Si queremos mostrar menos datos, enfocando tan solo en los datos de la particion, el porcentaje y la memoria usada y la memoria total, tendríamos que ejecutar la siguiente regla”

    no me mostró nada. ni marcó error.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *