Entrada

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

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

1
uptime | awk {'print $3'}

Con esto conseguiremos: 20:10,

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

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

1
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

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

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

Esto nos devolvería: 94MB

Ahora vamos a recoger el dato de toda la memoria disponible

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

1
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

1
df -h
```Filesystem            Size  Used Avail Use% Mounted on```
```/dev/simfs``` ```10G  1.4G  8.7G  14% /```
```none                  256M  4.0K  256M   1% ``````/dev```
1
2
3
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

Esta entrada está licenciada bajo CC BY 4.0 por el autor.