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.
topdivide o uso da CPU entre usuário, processos e processos do sistema nice, queremos a soma dos três. Portanto, podemos executar topno bmodo atch, o que nos permite analisar sua saída. No entanto, conforme explicado aqui , a primeira iteração top -bretorna 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 o dintervalo entre as iterações para 0.01. Finalmente, você é grepa linha que contém as porcentagens da CPU e, em seguida, usa gawkpara somar usuário, sistema e processos agradáveis:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Eu pensei que você também poderia obter essas informações ps -o pcpu axadicionando 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:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
E, para evitar problemas com a localização, defina o código do idioma para C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'