Sabemos que top
é um comando para obter o uso da CPU no Linux e outras maneiras incluem
cat /proc/stat
qual é usado pelo top.
Quais são os outros métodos para obter o uso da CPU na linha de comando do Linux?
Cenário de caso de uso: A saída deste comando será usada por um script para registrar o uso da CPU continuamente. top
e /proc/stat
forneça um uso detalhado e difícil de registrar. Existe uma maneira mais fácil de obter as informações da CPU?
linux
command-line
fasil
fonte
fonte
sed
o resultado se quiser apenas o valor.top
o outro e dá um comando muito útil. Não é um eu uso X, e você? pergunta, mas uma Como eu faço X pergunta. Votação para reabrir.Respostas:
Como outros já disseram, o melhor caminho é provavelmente
top
. Ele precisa de alguns ajustes e um pouco de análise, mas você pode obtê-lo para fornecer o uso atual da CPU como porcentagem.top
divide o uso da CPU entre usuário, processos e processos do sistemanice
, queremos a soma dos três. Portanto, podemos executartop
nob
modo atch, o que nos permite analisar sua saída. No entanto, conforme explicado aqui , a primeira iteraçãotop -b
retorna as porcentagens desde a inicialização, portanto, precisamos de pelo menos duas iterações (-n 2
) para obter a porcentagem atual. Para acelerar as coisas, você pode definir od
intervalo entre as iterações para0.01
. Finalmente, você égrep
a linha que contém as porcentagens da CPU e, em seguida, usagawk
para somar usuário, sistema e processos agradáveis:Eu pensei que você também poderia obter essas informações
ps -o pcpu ax
adicionando o% de uso de cada processo em execução. Infelizmente, conforme explicado aqui ,ps
"retorna a porcentagem de tempo gasto em execução durante toda a vida útil de um processo", que não é o que você precisa.EDITAR
Com base no seu comentário, sua versão
top
é diferente da minha e você deve usá-lo:E, para evitar problemas com a localização, defina o código do idioma para C:
fonte
sar
é a maneira definitiva de fazer isso. Então, por exemplo,sar -u
irá produzir algo como isto:Você não diz qual Linux você usa, mas para o CentOS / RedHat você precisa instalar o
sysstat
pacote, e acho que é o mesmo no Debian / Ubuntu.Você também pode usar o sar para coletar estatísticas ad hoc :
Reunirá estatísticas a cada 60 segundos 600 vezes, portanto, 600 minutos.
fonte