Um revestimento para mostrar o uso da CPU, RAM e HDD

15

Eu já vi alguns posts desejando o mesmo em relação ao uso, no entanto, as respostas SEMPRE se referem à instalação de alguma ferramenta de terceiros.

Eu não quero instalar nada.

Qualquer um forros? O seguinte seria uma boa saída:

CPU 11% RAM 20% HDD 85%
Karl Morrison
fonte
O uso de HDD é a porcentagem de quão cheio é ou de quão ocupado é?
Byte Commander
@ByteCommander Both? :) Em uma nota séria, a capacidade embora. Se ambos, isso seria legal.
Karl Morrison
Suspiro .......: - /
Byte Commander
@ByteCommander por capacidade Quero dizer "como completo é" se eu não estava claro :)
Karl Morrison

Respostas:

28

Você pode usar isso

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)}'`"

A saída é

CPU 7.4% RAM 33.9% HDD 94%
MKay
fonte
2
a parte HD será péssima se você tiver muitas partições.
coteyr
1
df -h /parte da linha de comando mostra as estatísticas sobre a /partição. Você pode repetir o df -hcomando e substituir /pelo ponto de montagem que precisa monitorar.
mkay
1
Não funciona para mim. A CPU é sempre 91%, não tenho ideia de onde isso ocorre. // E a RAM inclui buffers e cache, fazendo com que pareça esgotado. Eu uso 97,8% de RAM, mas ainda há 67,5% de graça.
Oskar Skog
2
@OskarSkog Você topestá bem. O uso da CPU não pode ser medido no momento atual; ele deve ser medido em um curto espaço de tempo. Quando topexecuta a primeira iteração, mostra o uso médio desde a última reinicialização. Começando com a segunda iteração, ele mostra o uso atual real desde a iteração anterior. E se você tiver problemas com a localização, poderá colocar LC_ALL=Cna frente do comando para usar a localização padrão em inglês (formatos de número, etc., não idioma).
Byte Commander
2
@ Kay: Você pode querer substituir top -bn1 | grep "Cpu(s)"com top -bn2 | grep "Cpu(s)" | tail -n1. O primeiro exibirá uma média de longo prazo, conforme apontado pelo Byte Commander.
Oskar Skog
7

Para uso da CPU (média de (user+system)/(user+system+idle)vezes acima de 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 do HDD (apenas o volume montado como /):

df | awk '/ \/$/{print "HDD "$5}'
Byte Commander
fonte
Interessante, há menos memória disponível do que o que `free -m | cabeça -n3 | cauda -n1 'relata como memória livre.
Oskar Skog
@OskarSkog Você pode compartilhar sua saída desse comando? Para mim, simplesmente imprime a linha total / usada / livre de troca, que não é relevante aqui. Talvez você quis dizer outra coisa, ou o seu freecomando ainda utiliza o formato de saída de idade com separado - line / + buffers / cache ...
Byte Comandante
Meu programa gratuito usa o formato antigo: oskog97.com/sshin/free-output.png O que mudou?
Oskar Skog
3
@OskarSkog A linha "- / + buffers / cache" foi removida e agora existe uma coluna adicional "disponível" na linha "Mem". De man free: " Estimativa da quantidade de memória disponível para iniciar novos aplicativos, sem troca. Ao contrário dos dados fornecidos pelo cache ou pelos campos livres, esse campo leva em consideração o cache da página e também que nem todas as placas de memória recuperáveis ​​serão recuperadas devido a itens estando em uso MemAvailable em / proc / meminfo, disponível no kernels 3.14, emulado no kernels 2.6.27+, caso contrário, o mesmo que o gratuito) "
Byte Commander