Eu escrevi um script para o meu dwm
statusbar. Uma parte é encontrar o uso da CPU atual para cada núcleo único no meu sistema. Eu mesmo descobri uma maneira, mas eu precisaria de ajuda para consertar um bug nisso. Aqui está o comando: top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'
. Isso pressupõe que seu top
mostre cada núcleo por padrão. Você pode conseguir isso emitindo top
, em seguida, pressionando 1
e, em seguida, pressionando W
para salvar a configuração atual em um arquivo .toprc
em sua pasta pessoal. Toda vez que você abrir top
, ele exibirá todos os seus núcleos. Meu comando acima mencionado tem a desvantagem de quando atribuído a uma variável como esta:
CPU=$(top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}')
e, em seguida, usando $CPU
com xsetroot
assim: xsetroot -name "$CPU"
Receberei a saída desejada na minha barra de status, mas entre cada porcentagem da CPU haverá dois símbolos uma em cima da outra separando-os v
e %código%. Como me livrar deles? Tem algo a ver que eu posso estar usando uma matriz em vez de uma string aqui?
Você pode ver o problema no lado esquerdo da imagem .
Comando:
top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'
exemplo de saída:
14.3
12.0
8.0
10.0
Nota para qualquer um que use este script: Quando o uso da CPU para um núcleo atingir t
, a matriz que o comando gera moverá a coluna com a carga atual da coluna 100%
para a coluna 3
. Assim, com 2
, você verá awk '{print $3}'
como saída para a coluna us,
. Se você está bem com isso, deixe isso. Se não, você pode ter 3
print column awk
também. Será apenas 2
. Uma solução que evita todas essas armadilhas é:
top -bn 2 | grep -F '%Cpu' | tail -n 4 | gawk '{print $2 $3}' | tr -s '\n\:\,[:alpha:]' ' '