Quero exibir Uso de memória, Uso de disco e Carga da CPU no seguinte formato:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Como faço isso?
Quero exibir Uso de memória, Uso de disco e Carga da CPU no seguinte formato:
Memory Usage: 33/512MB (6%)
Disk usage: 4.2/20GB (23%)
CPU Load: 0.01
Como faço isso?
Respostas:
Tente isso, ele funciona no meu sistema Debian. Os detalhes podem variar dependendo da implementação dessas ferramentas que seu sistema operacional usa:
#!/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)}'
Se você salvar o acima como um script e executá-lo, obterá (exemplo do meu sistema):
$ ./foo.sh
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78
Observe que o script acima está fornecendo o uso do disco para a /partição. Você não especificou o que queria, então acho que é isso que você procura.
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 }'
Verifique no topo .
Leia isto, https://lwn.net/Articles/387202/
Vejo,

Você pode ver a carga do disco / memória / CPU pelos aplicativos:

Por exemplo, uso do disco:

no topo das estatísticas reunidas no diretório /var/log/atop/em arquivos de formato binário por dia. Você pode ler uma página de manual, deve haver uma maneira de extrair informações úteis.
Não há um comando para exibir exatamente em seu formato específico, mas os seguintes fornecem alguns dos valores base, sobre os quais se pode construir um script, como alternativa, também é possível ler valores de / proc e / sys.
free - visão geral rápida
vmstat 1 mostra estatísticas de E / S de desempenho do sistema
top dinâmico
htop semelhante ao topo
Se você estiver usando solaris, verifique isto: showcpucount
Isso lhe dará uma idéia de como escrever seu código.
Aqui está o meu código para obter o uso da CPU e da 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
Você deve poder exibir o uso da memória, o uso do disco e a carga da CPU usando:
(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)