Como fazer com que o comando ps mostre memória em mb em vez de kb?
11
O comando ps do Linux mostra diferentes usos de memória, como rss, tamanho em kb por padrão. Existe uma maneira de mostrar em mb ou gb como ls -s --human-readablefaz?
A falta de menção em man pssugere para mim que não existe essa opção embutida.
Ulrich Schwarz
Respostas:
20
AFAIK você não pode alcançá-lo simplesmente por pscomando puro com opções. No entanto, você pode usar alguns processadores de texto como awke fazer o que quiser:
Isso leva o resultado de pse, em seguida, para cada linha, exceto a primeira que substitui a 5ª coluna, que normalmente está em KB, para MB, adicionando o sufixo M.
Você pode criar um alias e armazená-lo no arquivo .bashrc para poder chamá-lo por algo como myps.
A maioria das pessoas está perguntando como preservar o formato ou usar outras unidades e precisão.
Para uma versão simples, você pode usar column -to filtro de saída:
No entanto, isso não reconhece espaços na última coluna corretamente. Infelizmente, precisamos lidar com a formatação de texto e preparar nossa própria string de formato no printfformato like.
NR==1condição é apenas para a primeira linha (cabeçalho). Estamos usando a saída ps original para determinar onde o COMMAND está iniciando:
o=$0 armazena toda a linha não modificada para que possamos usá-la mais tarde
a=match($0,$11) localiza a localização do 11º campo (que deve ser onde a coluna COMMAND está começando na saída original)
NR>1é para as seguintes linhas (dados). Estamos mudando o quinto campo:
$5=int(10*$5/1024)/10"M" altera o valor em megabytes com uma casa decimal e adiciona o sufixo "M".
printf exibe todos os campos com sabor de coluna:
%-10ssignifica scorda, 1010 caracteres de largura, -alinhamento à esquerda
%8ssignifica sstring, 8com 8 caracteres de largura e, por causa disso, nenhuma -saída desse campo está alinhada à direita.
substr(o, a)pega a substring da linha original (portanto oarmazenada antes) começando da posição acalculada na condição anterior, para que possamos ter a saída do comando exibida com os espaços preservados.
man ps
sugere para mim que não existe essa opção embutida.Respostas:
AFAIK você não pode alcançá-lo simplesmente por
ps
comando puro com opções. No entanto, você pode usar alguns processadores de texto comoawk
e fazer o que quiser:Isso leva o resultado de
ps
e, em seguida, para cada linha, exceto a primeira que substitui a 5ª coluna, que normalmente está em KB, para MB, adicionando o sufixo M.Você pode criar um alias e armazená-lo no arquivo .bashrc para poder chamá-lo por algo como
myps
.A maioria das pessoas está perguntando como preservar o formato ou usar outras unidades e precisão.
Para uma versão simples, você pode usar
column -t
o filtro de saída:No entanto, isso não reconhece espaços na última coluna corretamente. Infelizmente, precisamos lidar com a formatação de texto e preparar nossa própria string de formato no
printf
formato like.Explicação:
NR==1
condição é apenas para a primeira linha (cabeçalho). Estamos usando a saída ps original para determinar onde o COMMAND está iniciando:o=$0
armazena toda a linha não modificada para que possamos usá-la mais tardea=match($0,$11)
localiza a localização do 11º campo (que deve ser onde a coluna COMMAND está começando na saída original)NR>1
é para as seguintes linhas (dados). Estamos mudando o quinto campo:$5=int(10*$5/1024)/10"M"
altera o valor em megabytes com uma casa decimal e adiciona o sufixo "M".%-10s
significas
corda,10
10 caracteres de largura,-
alinhamento à esquerda%8s
significas
string,8
com 8 caracteres de largura e, por causa disso, nenhuma-
saída desse campo está alinhada à direita.substr(o, a)
pega a substring da linha original (portantoo
armazenada antes) começando da posiçãoa
calculada na condição anterior, para que possamos ter a saída do comando exibida com os espaços preservados.fonte
1.23GB
):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
ps
formatação? Tabs são completamente arrancada comawk