Un revestimiento para mostrar el uso de CPU, RAM y HDD

15

He visto algunas publicaciones que quieren lo mismo con respecto al uso, sin embargo, las respuestas SIEMPRE se refieren a la instalación de alguna herramienta de terceros.

No quiero instalar nada.

¿Alguien se recubre? Lo siguiente sería un buen resultado:

CPU 11% RAM 20% HDD 85%
Karl Morrison
fuente
¿El uso de HDD es el porcentaje de lo lleno que está o lo ocupado que está?
Byte Commander
@ByteCommander Ambos? :) En una nota seria, la capacidad sin embargo. Si los dos estuvieran bien.
Karl Morrison
Suspiro .......: - /
Byte Commander
@ByteCommander Por capacidad quiero decir "cuán lleno está" si no estaba claro :)
Karl Morrison

Respuestas:

28

Puedes usar esto

echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"

La salida es

CPU 7.4% RAM 33.9% HDD 94%
MKay
fuente
2
la parte HD va a apestar si tienes muchas particiones.
coteyr
1
df -h /parte de la línea de comando muestra las estadísticas sobre la /partición. Puede repetir el df -hcomando y sustituirlo /por el punto de montaje que necesita monitorear.
MKay
1
No funciona para mi La CPU siempre es del 91%, no tengo idea de dónde saca eso. // Y la RAM incluye buffers y caché haciendo que parezca que está agotada. Yo uso 97.8% de RAM, pero todavía hay 67.5% gratis.
Oskar Skog
2
@ OskarSkog Tu topestá bien. El uso de la CPU no se puede medir en el momento actual, se debe medir en un corto período de tiempo. Cuando topejecuta la primera iteración, muestra el uso promedio desde el último reinicio. Comenzando con la segunda iteración, muestra el uso actual real desde la iteración anterior. Y si tiene problemas con la localización, puede poner LC_ALL=Cdelante del comando para usar la localización predeterminada en inglés (formatos de números, etc., no idioma).
Byte Commander
2
@MKay: es posible que desee reemplazar top -bn1 | grep "Cpu(s)"con top -bn2 | grep "Cpu(s)" | tail -n1. El primero mostrará un promedio a largo plazo como lo señala Byte Commander.
Oskar Skog
7

Para uso de CPU (promedio de (user+system)/(user+system+idle)veces durante 0.1 segundos):

(grep 'cpu ' /proc/stat;sleep 0.1;grep 'cpu ' /proc/stat)|awk -v RS="" '{print "CPU "($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)"%"}'

Para uso de RAM ( (total-available)/total):

awk '/MemTotal/{t=$2}/MemAvailable/{a=$2}END{print 100-100*a/t"%"}' /proc/meminfo

Para uso de HDD (solo del volumen montado como /):

df | awk '/ \/$/{print "HDD "$5}'
Byte Commander
fuente
Interesante, hay menos memoria disponible que lo que `free -m | cabeza -n3 | tail -n1 'informa como memoria libre.
Oskar Skog
@OskarSkog ¿Puedes compartir tu salida de ese comando? Para mí, simplemente imprime la línea Swap total / used / free, que no es relevante aquí. Tal vez quisiste decir algo más, o tu freecomando todavía usa el antiguo formato de salida con - / + buffers / línea de caché por separado ...
Byte Commander
My free utiliza el formato anterior: oskog97.com/sshin/free-output.png ¿Qué ha cambiado?
Oskar Skog
3
@OskarSkog La línea "- / + buffers / cache" se eliminó y ahora hay una columna adicional "disponible" en la fila "Mem". De man free: " Estimación de la cantidad de memoria disponible para iniciar nuevas aplicaciones, sin intercambio. A diferencia de los datos proporcionados por la memoria caché o los campos libres, este campo tiene en cuenta la memoria caché de la página y también que no se recuperarán todas las losas de memoria recuperables debido a elementos en uso Mem Disponible en / proc / meminfo, disponible en kernels 3.14, emulado en kernels 2.6.27+, de lo contrario es lo mismo que gratis) "
Byte Commander