Muchas ocasiones me he topado con que los clientes internos y externos solicitan el estado de la memoria y muchas veces no les interesa la cantidad de gigas libres, sino el porcentaje, ya que 2 GB libres no es lo mismo cuanto tiene 4 Gb de RAM a que cuando tienes 256 GB de ram y solo tienes 2 GB libres que se pueden consumir en un segundo. Aquí te digo como puedes tener un porcentaja aproximado de memoria libre con un comando no tan simple pero que es mejor que estar haciendo cuentas cadas ves.
Como sacar el porcentaje de memoria libre en linux
Como administrador de sistemas es siempre importante tener un sistema de monitoreo que esté midiendo los recursos disponibles del sistema y sobre todo que te permita ver el historico, es decir, en un punto en el tiempo como estaba y ver cuando subio o bajo el uso de un recurso. Para esto siempre es bueno instalar aplicaciones como Nagios, Zabbix o algun otro.
Pero siempre está la necesidad de ir a un host y ver el estado del equipo en este momento y cuando solo hay disponible la linea de comandos. Para esto pues hay comandos como top, htop, vmstat o free
Pero ninguno te da el porcentage de memoria ocupada o libre como tal, así que me puse a ver como hacer uno que (aunque no exacto, es un trabajo en desarrollo) pudiera var una idea de la memoria ocupada y libre.
Para este comendo usaremos el comando free, pero usaremos los valores que genera para calcular el porcentaje. Así puedes tener ese % de memoria libre y memoria ocupada en porcentajes:
free | awk '/Mem/{printf("Memory used: %.2f%"), $3/$2100} /Mem/{printf(" free: %.2f%\n"),($6+$4)100/$2}'
No parece muy entendible, pero lo que hace es que calcula el porcentaje en base a la memoria total en función de la memoria usada y libre, que es la memoria libre mas la memoria buffer/cache.
Un ejemplo de la salida de este comando es esta:
$ free | awk '/Mem/{printf("Memory used: %.2f%"), $3/$2100} /Mem/{printf(" free: %.2f%\n"),($6+$4)100/$2}'
Memory used: 50.57% free: 49.43%
En algunos casos este valor puede no ser exacto, pero te da un valor a presentar que ayudará a algún DBA, un Project Manager o algún otro cliente a tomar una decisión sobre el host. La verdad es que es mucho mas legible o claro en la idea el porcentaje anterior que lo que obtienes con el comando free:
$ free
total used free shared buff/cache available
Mem: 15932424 8119052 3509312 1044164 4304060 6431212
Swap: 2080764 0 2080764
Aun cuando solo veas los gigas de memoria libre es mas sencillo mostrar un porcentaje.
$ free -g
total used free shared buff/cache available
Mem: 15 7 3 0 4 6
Swap: 1 0 1
Espero que te sirva para que puedas tener un dato que se de información rápida y práctica sobre el estado de la memoria de un host ya sea Centos, RHEL, Debian o cualquier otro linux que tenga el comando free.
By Ulan 02/02/2021 - 9:30 am
A mi me da error.
awk: cmd. line:1: (FILENAME=- FNR=2) fatal: division by zero attempted
Al final, pongo> free -h
Y arreando. Salu2.