Eu posso estar errado, mas não é só isso?
ps aux | awk 'NR>2{arr[]+=}END{for(i in arr) print i,arr[i]}'
A resposta está em% de uso da CPU.
Eu digitei este comando para obter o uso de memória para cada usuário:
ps aux | awk 'NR>2{arr[]+=}END{for(i in arr) print i,arr[i]}'
Eu quero saber se existe um comando ou uma maneira de obter o uso da CPU ou, em outras palavras, "porcentagem de utilização da CPU" para cada usuário, como o comando acima, que sua saída:
Eu posso estar errado, mas não é só isso?
ps aux | awk 'NR>2{arr[]+=}END{for(i in arr) print i,arr[i]}'
A resposta está em% de uso da CPU.
Eu não sou bom com scripts (este, por exemplo, certamente fará algumas pessoas chorarem e rasgarem seus olhos ... fique à vontade para editar meu post para incluir coisas como contador de outras coisas que eu não sei como fazer.)
Este script exibirá a% de CPU usada, calculando-a em top
. Mas vai usar um arquivo temporário para armazenar os nomes de usuários. Acho que essa é a maneira mais apropriada de calcular o uso da CPU, pois ps aux
não diz exatamente a mesma coisa que top
.
#! /bin/bash
## store the usernames in .aux.tmp temporary file
ps aux | awk 'NR>2{arr[]+=}END{for(i in arr) print i}' > .aux.tmp
## print each user, then calcultate each CPU-usage with top
# this will only print the 9 firsts users. if you expect more than
# 9 users, add lines following the pattern (by replacing "9p"
# by "10p" for the 10st user, for example).
# print user 1 :
echo 'sed -n '1p' .aux.tmp'
top -b -n 1 -u 'sed -n '1p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 2 :
echo 'sed -n '2p' .aux.tmp'
top -b -n 1 -u 'sed -n '2p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 3 :
echo 'sed -n '3p' .aux.tmp'
top -b -n 1 -u 'sed -n '3p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 4 :
echo 'sed -n '4p' .aux.tmp'
top -b -n 1 -u 'sed -n '4p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 5 :
echo 'sed -n '5p' .aux.tmp'
top -b -n 1 -u 'sed -n '5p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 6 :
echo 'sed -n '6p' .aux.tmp'
top -b -n 1 -u 'sed -n '6p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 7 :
echo 'sed -n '7p' .aux.tmp'
top -b -n 1 -u 'sed -n '7p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 8 :
echo 'sed -n '8p' .aux.tmp'
top -b -n 1 -u 'sed -n '8p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
# print user 9 :
echo 'sed -n '9p' .aux.tmp'
top -b -n 1 -u 'sed -n '9p' .aux.tmp' | awk 'NR>7 { sum += ; } END { print sum; }'
echo ""
Este script irá imprimir os 9 primeiros usuários e a% de CPU que eles usam. Você pode adicionar linha se tiver mais de 9 usuários, basta seguir o mesmo padrão (substituir Xp
pelo número, duas vezes por linha)
Você pode copiar e colar isso em um arquivo e executá-lo com bash /path/to/file