Como obter a porcentagem de utlização da CPU para cada usuário no Ubuntu usando um comando

1

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:

    
por Akari 16.02.2014 / 00:16

2 respostas

2

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.

    
por MrVaykadji 16.02.2014 / 00:29
2

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

    
por MrVaykadji 16.02.2014 / 01:03