O que é uma alternativa de linha de comando ao topo para encontrar a atual utilização da CPU que não depende da largura da tela?

6

Se eu executar top -p <myPID> -n 1 com um terminal que não seja grande o suficiente, a% de utilização da CPU será omitida da saída. Ao tentar encontrar uma utilização da CPU via bash scripting, este é um grande problema, pois o script não funcionará se o terminal em que você estiver executando não for amplo o suficiente.

ps -oe pcpu,pid,cmd me dará a média total da CPU, mas não uma utilização em execução.

Existe um comando que eu possa usar para obter a atual utilização de cpu de um processo que não depende da largura do terminal?

    
por Cory Klein 11.06.2011 / 01:03

4 respostas

5

O pacote sysstat inclui o mpstat. Correndo

mpstat 2 | awk '{print $11}'

Dei-me o percentual de tempo ocioso que parece ser o inverso do que você quer, então você pode precisar fazer um pouco de trabalho na saída do mpstat:

8 % mpstat 2 | awk '{print $11}'

%idle
100.00
99.50
100.00
100.00
100.00
100.00

Eu tinha o mpstat no meu sistema Slackware 11, mas ele não apareceu no meu sistema Arch até que eu fiz pacman -S sysstat

    
por 14.06.2011 / 02:32
2

Em seu script, defina a variável de ambiente COLUMNS como suficientemente alta para obter a saída de que você precisa.

export COLUMNS=100
top -p ... 

Você também pode alterar o COLUMNS var apenas para a invocação top :

COLUMNS=100 top -p ...
    
por 14.06.2011 / 00:07
1

Você pode usar a tecla f para ajustar as colunas exibidas. Remova algumas colunas e adicione a% da CPU. Você deve ser capaz de vê-lo então.

    
por 11.06.2011 / 03:23
1
ps u -p <PID>

Funciona bem. você também pode tentar usar awk com ele:

 pid=16707; ps u -p $pid --no-heading | awk -v pid=${pid} -F" " '{print "CPU usage for "$11": "$3}'
    
por 11.06.2011 / 04:14