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