Mostra os cinco principais processos de consumo de CPU com 'ps'

82

Como mostrar os cinco principais processos de consumo de CPU com ps?

    
por PlanasB 28.05.2011 / 20:13

12 respostas

80

Por que usar ps quando você pode fazer isso facilmente com o comando top ?

Se você precisar usar ps , tente isto:

ps aux | sort -nrk 3,3 | head -n 5

Se você quer algo realmente 'top'esq com atualizações constantes, use watch

watch "ps aux | sort -nrk 3,3 | head -n 5"
    
por 28.05.2011 / 20:20
73

A resposta correta é :

ps --sort=-pcpu | head -n 6

Assim, você pode especificar colunas sem interferir na classificação.

Ex:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

Nota para o MAC OS X : no Mac OS X, ps não reconhece --sort , mas oferece -r para classificar pelo uso atual da CPU. Assim, para o Mac OS X, você pode usar:

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
    
por 20.08.2014 / 17:36
26

Dependendo das suas necessidades, você pode achar isso um pouco mais legível:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

exemplo de saída:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(os campos são% CPU, PID, USER, COMMAND)

    
por 29.11.2012 / 16:34
19

Eu não acho que ps é o que você está procurando. Você já olhou para a saída de top ?

Se você tem o GNU-Top, tente usar o seu modo batch para cuspir uma lista de processos ordenada pelo uso da CPU e usando head / tail para obter as 5 linhas principais (os primeiros 8 são cabeçalhos):

top -b -n 1 | head -n 12  | tail -n 5

O topo do BSD parece se comportar de maneira diferente e não tem um modo não interativo, então use uma das outras soluções baseadas em ps .

    
por 28.05.2011 / 20:25
5

Um forro mais rápido que encontrei para isso (nota 6 porque o cabeçalho é adicionado):

ps aux k-pcpu | head -6
    
por 13.08.2015 / 23:55
4

Observe que as versões atuais do ps têm capacidade de classificação dentro delas, com base nos códigos de campo (dados na página man do ps). O código de campo para uso do processador é "c". Você pode usar --sort c no final de um comando ps, ps aux --sort c

Isso colocará o processo usando a maior parte da CPU na parte inferior da lista. Ordem inversa da lista adicionando menos ao código de campo usado para ordenar ps aux --sort -c

    
por 29.05.2014 / 14:10
3

A ferramenta de linha de comando ps tem sua própria opção de classificação, então eu prefiro:

$ ps -eo pcpu,args --sort=-%cpu | head

Você pode adicionar as colunas desejadas. Veja quais outras opções estão disponíveis na página ps man.

$ man ps
    
por 21.05.2015 / 04:45
3

Para adicionar um ponto a outras respostas valiosas, prefiro:

ps auxk-c | head -6

Ele também imprime o cabeçalho, o que é legal.

Aqui k é idêntico a --sort e c especifica o campo de uso da CPU (alias %cpu ) para classificação, enquanto - é para classificação inversa.

Você pode adicionar mais especificadores separados por , , outros possíveis especificadores são: %mem , args , bsdstart , pid , gid , uid ... que você pode encontrar lista na seção ESPECIFICADORES DE FORMATO PADRÃO da página man. Por exemplo:

 ps auxk -gid,-%mem | head -11

imprime 10 processos com o maior ID de grupo, classificados internamente pelo uso da memória.

    
por 12.05.2017 / 09:36
0

top no Mac OS X tem uma opção de modo de log na forma de top -l numberOfSamples (que parece ser o equivalente ao modo de lote do GNU top ). É necessário, no entanto, ter pelo menos duas amostras porque "a primeira amostra exibida terá uma% de CPU inválida exibida para cada processo, pois é calculada usando o delta entre as amostras" ( man 1 top ).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
    
por 15.04.2013 / 14:01
0

top exibirá o que está usando sua CPU. Se você o instalou, o htop permite um controle mais refinado, incluindo a filtragem, no seu caso, da CPU.

    
por 31.10.2016 / 16:45
0

Eu acredito que a maneira mais simples de ver o processo de consumo de 5 cpu é

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Para ver o processo de consumo de memória mais alto ,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Onde,

-e : este sinalizador é usado para selecionar todo o processo

-o : este sinalizador é usado para formatar como definido pelo usuário.

pid : Este argumento usado para mostrar pid

comm : Esse argumento é usado apenas para mostrar o nome do comando. Para obter o comando completo, use args , cmd ou command

%cpu : Este argumento mostra a porcentagem de utilização de cpu do processo no formato "##. #". Aqui pcpu também pode ser usado.

%mem : Este argumento mostra a proporção do tamanho do conjunto residente do processo para a memória física na máquina, expressa como uma porcentagem. Aqui pmem também pode ser usado.

--sort : especifique a ordem de classificação. Após = , o sinal - é usado para classificar o valor mais alto na parte superior, em que a opção padrão que é + é listar ordem numérica crescente [isto é, 0 a n].

    
por 05.12.2017 / 05:04
-2

top -bn1 |sed -n '7,12'p também funciona como um pequeno transatlântico.
Embora eu prefira usar ps com o --sort = X -o X, Y, Z

usando o ps você pode extrair estatísticas diferentes para um processo ou usuário e, em seguida, calcular o total ou classificá-los com um pipe para awk.

    
por 11.09.2015 / 05:06

Tags