Comando para exibir Uso de Memória, Uso de Disco e Carga da CPU


15

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?


Parece muito com lição de casa. Pegue os dados necessários no / proc ou em outros comandos e depois formate-os com awk, perl ou apenas bash.
— mikebabcock

Bem-vindo ao Unix e Linux Stack Exchange! Por favor, sempre incluir o seu OS. As soluções geralmente dependem do sistema operacional que está sendo usado. Você está usando Unix, Linux, BSD, OSX, outra coisa? Qual versão?
— terdon

Obrigado rapazes por sua ajuda. No entanto, eu tenho a minha resposta aqui stackoverflow.com/questions/33774260/...
— Mohsin Inayat Khan

Respostas:


33

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.



@RahulPatil parece bom, por que você não o publica?
— terdon

3
porque é apenas a sua cópia e ans. : D
— Rahul Patil 31 /

1
a linha free -m me dá um erro, a porcentagem não foi escapada corretamente. é assim que deve ser:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
— simon

1
@ user1735921 Faça uma pergunta . Mas primeiro, pesquise no google como armazenar a saída de um comando em uma variável, isso é trivial. Em seguida, explique o que você deseja armazenar e o que deseja testar na pergunta.
— terdon

5

Verifique no topo .

Leia isto, https://lwn.net/Articles/387202/

Vejo, insira a descrição da imagem aqui

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

insira a descrição da imagem aqui

Por exemplo, uso do disco:

insira a descrição da imagem aqui

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.


2

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


1
Jogue no meu favorito, iostat.
— mikebabcock

0

Eu acho que você precisa da ajuda do nagios, pois todos esses plugins / srcipts para nagios já foram criados e você pode fazer o download e testar sem a instalação do nagios.



0

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

-2

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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.