Respostas:
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:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
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:
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 printfformato 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==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 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".%-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.1.23GB):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
psformatação? Tabs são completamente arrancada comawk
man pssugere para mim que não existe essa opção embutida.