Quiero mostrar el uso de la memoria, el uso del disco y la carga de la CPU en el siguiente formato:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
¿Cómo puedo hacer eso?
Quiero mostrar el uso de la memoria, el uso del disco y la carga de la CPU en el siguiente formato:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
¿Cómo puedo hacer eso?
Respuestas:
Prueba esto, funciona en mi sistema Debian. Los detalles pueden variar según la implementación de estas herramientas que utiliza su sistema operativo:
#!/bin/sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
Si guarda lo anterior como un script y lo ejecuta, obtendrá (ejemplo de mi sistema):
$ ./foo.sh
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78
Tenga en cuenta que la secuencia de comandos anterior proporciona el uso del disco para la /
partición. No especificaste lo que querías, así que supongo que eso es lo que buscas.
awk
github.com/rahulinux/scripts/blob/master/sys_info.sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
Comprueba en la cima .
Lea esto, https://lwn.net/Articles/387202/
Ver,
Puede ver la carga de disco / memoria / cpu por aplicaciones:
Por ejemplo, uso del disco:
encima de las estadísticas recopiladas en el directorio /var/log/atop/
en archivos de formato binario por días. Puede leer una página de manual, debe haber una forma de extraer información útil.
No hay un comando para mostrar exactamente en su formato particular, pero los siguientes proporcionan algunos de los valores base, sobre los cuales se podría construir un script, como alternativa también es posible leer valores de / proc y / sys.
free
- vista rápida
vmstat 1
muestra las estadísticas de E / S de rendimiento del sistema
top
dinámica
htop
similar a la parte superior
Si está utilizando Solaris, consulte esto: showcpucount
Esto le dará una idea de cómo escribir su código.
Aquí está mi código para obtener el uso de CPU y RAM:
### 1. get total average CPU usage for the past minute
avg_cpu_use=$(uptime)
# a. split response
IFS=',' read -ra avg_cpu_use_arr <<< "$avg_cpu_use"
# b. find cpu usage
avg_cpu_use=""
for i in "${avg_cpu_use_arr[@]}"; do :
if [[ $i == *"load average"* ]]; then
avg_cpu_use=$i
break
fi
done
# c. create response
avg_cpu_use=$(echo ${avg_cpu_use:16}) # Remove " load average: "
if [[ -z "${avg_cpu_use// }" ]]; then
avg_cpu_use="CPU: N/A%%"
exit -1
else
avg_cpu_use="CPU: ${avg_cpu_use}%%"
fi
### 2. get RAM usage
ram_use=$(free -m)
# a. split response by new lines
IFS=$'\n' read -rd '' -a ram_use_arr <<< "$ram_use"
# b. remove extra spaces
ram_use="${ram_use_arr[1]}"
ram_use=$(echo "$ram_use" | tr -s " ")
# c. split response by spaces
IFS=' ' read -ra ram_use_arr <<< "$ram_use"
# d. get variables
total_ram="${ram_use_arr[1]}"
ram_use="${ram_use_arr[2]}"
# e. create response
ram_use="RAM: ${ram_use}/${total_ram} MB"
echo $avg_cpu_use
echo $ram_use
Debe poder mostrar el uso de la memoria, el uso del disco y la carga de la CPU utilizando:
(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)