Respostas:
Por que usar ps
quando você pode fazer isso facilmente com o top
comando?
Se você deve usar ps
, tente o seguinte:
ps aux | sort -nrk 3,3 | head -n 5
Se você deseja algo realmente "top", com atualizações constantes, use watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
realmente funciona.
top
lê a lista de processos e exibir o resultado em sua própria sem tubulação para qualquer outro processo
A resposta correta é :
ps --sort=-pcpu | head -n 6
Portanto, 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
a classificação pelo uso atual da CPU. Assim, no Mac OS X, você pode usar:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash
(x2, ou head
bem) ps
...
sort
, o segundo mostra como especificar colunas sem interferir na classificação. Ao explicar alguma coisa ... é sempre melhor ser conciso e explicar uma coisa de cada vez.
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
saída de amostra:
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)
Eu não acho ps
que é o que você está procurando. Você já olhou para a saída top
?
Se você possui o GNU-Top, tente usar o modo batch para cuspir uma lista de processos classificada pelo uso da CPU e usando head / tail para obter as 5 principais linhas (os 8 primeiros 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 possui um modo não interativo; portanto, use uma das outras ps
soluções baseadas.
top -o cpu -n 5
uma maneira de conseguir a mesma coisa. Alguém sabe? O meu top
é diferente do seu top
.
-o
e -n
define o número de vezes que atualiza a exibição antes de sair.
top
parece não ter um modo em lote, o que é bastante limitador. Deve haver alguma maneira de canalizar top
para outros comandos. Eu vou fazer uma pesquisa.
top
funcionou como descrito nesta tarde. Felicidades.
O liner mais rápido que encontrei para isso (nota 6 porque o cabeçalho se soma):
ps aux k-pcpu | head -6
Observe que as versões atuais do ps têm a capacidade de classificação dentro delas, com base nos códigos de campo (fornecidos 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, por exemplops aux --sort c
Isso colocará o processo usando o maior número de CPUs na parte inferior da lista. Ordem inversa da lista adicionando um sinal de menos ao código do campo usado para classificar, por exemplo,ps aux --sort -c
Para adicionar um ponto a outras respostas valiosas, prefiro:
ps auxk-c | head -6
Também imprime o cabeçalho, o que é legal.
Aqui k
é idêntico --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 especificadores de possíveis são: %mem
, args
, bsdstart
, pid
, gid
, uid
... onde pode encontrar lista completa de especificadores de formato padrão seção da página homem. Por exemplo:
ps auxk -gid,-%mem | head -11
imprimiria 10 processos com o ID de grupo mais alto, classificado internamente pelo uso de memória.
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 que deseja. Veja quais outras opções estão disponíveis na ps
página de manual.
$ man ps
top
no Mac OS X tem uma opção de modo de log na forma de top -l numberOfSamples
(que parece ser 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 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
Acredito que a maneira mais simples de ver os 5 principais processos de consumo da CPU é,
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
Para ver os 5 principais processos de consumo de memória ,
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
Onde,
-e
: Este sinalizador é usado para selecionar todos os processos
-o
: Este sinalizador é usado para formatar como definido pelo usuário.
pid
: Este argumento usado para mostrar pid
comm
: Este argumento usado para mostrar apenas o nome do comando. Para obter o comando completo args
, use cmd
oucommand
%cpu
: Este argumento mostra a porcentagem de utilização da 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 ser usado para classificar o valor mais alto no topo, onde a opção padrão +
é listar a ordem numérica crescente [ou seja, 0 a n].