Eu acho que a pergunta é: eu poderia de alguma forma calcular a porcentagem de utilização da CPU apenas lendo o / proc / stat uma vez?
# head -1 /proc/stat
cpu 67891300 39035 6949171 2849641614 118251644 365498 2341854 0
Estou pensando em resumir as colunas, exceto o IOWait (eu estava lendo em algum lugar que é contado no modo inativo) e isso me daria 100% e cada coluna individual poderia ser transformada em porcentagem por (column / 100_percent) * 100.
- usuário: processos normais em execução no modo de usuário
- nice: niced processos em execução no modo de usuário
- system: processos em execução no modo kernel
- inativo: polegares giratórios
- iowait: aguardando a conclusão da E / S
- irq: interrupções de manutenção
- softirq: serviços softirqs
- roubar: espera involuntária
- guest: executando um convidado normal
- guest_nice: executando um convidado niced
Esta é uma abordagem viável ou estou totalmente fora da pista?
Se você quiser o oneliner, pode ser assim:
O resultado:
97.17000000000000000000
Como funciona:
produz
( 1055057784 - 1055058055 )/100
então essa linha de alimentação para bc. Vai ter algo como-7.84000000000000000000
, então apenas embrulhe100-$(value)
e alimente para bc novamenteLá:
sleep #
- Atraso de 1 segundo, se você alterar esse valor, o resultado intermediário deverá ser dividido pelo número de segundos.$5
- 5º campo, de acordo comman proc
e http://www.linuxhowtos.org/System/procstat.htmInforme-me se isso não funcionar para você.
fonte
Ou se você estiver satisfeito com apenas dois dígitos após o point awk, poderá fazer tudo muito mais simples e legível:
fonte