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
[code]
uptime
[/code]
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?
[code]
uptime | awk {‘print $3’}
[/code]
Con esto conseguiremos: 20:10,
Bueno en este ejemplo nos muestra la coma adicional. Vamos a quitarla.
[code]
uptime | awk {‘print $3’} | awk ‘match($0,","){print substr($0,RSTART-1,5)}’
[/code]
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.
[code]
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
[/code]
Mucho más pro.
Memoria Ram
Vamos a ver ahora ejemplo para recopilar información de la memoria ram.
Si ejecutamos el comando
[code]
free
[/code]
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.
[code]
echo `free -m | grep ‘+’ | awk {‘print $3’}`MB
[/code]
Esto nos devolvería: 94MB
Ahora vamos a recoger el dato de toda la memoria disponible
[code]
echo `free -m | grep ‘Mem:’ | awk {‘print $2’}`MB
[/code]
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.
[code]
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"
[/code]
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
[code]
df -h
[/code]
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
[code]
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’}`
[/code]
Que nos daría como resultado:
/ 14% 8.7G 10G
/dev 1% 256M 256M
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.
muy buen post, eres un genio. aun no los he probado pero se ve que me seran de mucha utilidad
Muy buena información. Gracias
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
Genial, utilísimo, muchas gracias.