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 como awk
e fazer o que quiser:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
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:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
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.
ps afu | awk 'NR==1 {o=$0; a=match($0,$11);}; NR>1 {o=$0;$5=int(10*$5/1024)/10"M";}{ printf "%-8s %6s %-5s %-5s %9s %9s %-8s %-4s %-6s %-5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, substr(o, a);}'
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
significa s
corda, 10
10 caracteres de largura, -
alinhamento à esquerda%8s
significa s
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 (portanto o
armazenada antes) começando da posição a
calculada na condição anterior, para que possamos ter a saída do comando exibida com os espaços preservados.1.23GB
):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
ps
formatação? Tabs são completamente arrancada comawk
man ps
sugere para mim que não existe essa opção embutida.