A maneira mais fácil de fazer isso é usar top
no modo em lote e em uma única iteração:
$ top -bn 1| grep Cpu
%Cpu(s): 5.0 us, 2.8 sy, 0.0 ni, 91.4 id, 0.5 wa, 0.0 hi, 0.2 si, 0.0 st
Veja minha resposta aqui para obter uma explicação dos campos. Basta dizer que você deseja a soma de us
, sy
e ni
, portanto é necessária alguma análise:
$ top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' > logfile
O comando acima retorna 7,8, o que significa que 7,8% da energia da CPU disponível está em uso naquele momento específico. Você pode usar cron
para executar esse comando, por exemplo, a cada minuto:
$ crontab -e
Isso abrirá uma janela do editor (do editor que você definiu como a variável $EDITOR
shell), nessa janela cole essa linha e salve e feche:
* * * * * top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' >> ~/logfile
Isso fará com que a porcentagem da CPU seja gravada em ~/logfile
a cada dois minutos.
Se você quiser um detalhamento para cada CPU, poderá analisar a saída de mpstat
:
$ mpstat -P ALL | tail -n +4 | gawk '{print "CPU:"$3,$4+$5+$6}'
CPU:all 7.87
CPU:0 10.73
CPU:1 10.75
CPU:2 4.97
CPU:3 5.09