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