Respuestas:
AFAIK no puede lograrlo simplemente por pscomando puro con opciones. Sin embargo, puede usar algunos procesadores de texto como awky hacer que haga lo que quiera:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
Esto toma el resultado de psy luego para cada línea, excepto la primera, reemplaza la quinta columna que está en KB normalmente, a MB agregando el sufijo M.
Puede convertirlo en un alias y almacenarlo en un archivo .bashrc para que pueda llamarlo por algo como myps.
La mayoría de las personas se preguntan cómo preservar el formato o utilizar otras unidades y precisión.
Para una versión simple, puede usar column -tel filtro de salida:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
Sin embargo, esto no reconoce espacios en la última columna correctamente. Desafortunadamente, tenemos que lidiar con el formato de texto y preparar nuestra propia cadena de formato en printfformato similar.
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);}'
Explicación:
NR==1la condición es solo para la primera línea (encabezado). Estamos utilizando la salida ps original para determinar dónde está comenzando el COMANDO:
o=$0 almacena toda la línea sin modificar para que podamos usarla más tardea=match($0,$11) encuentra la ubicación del undécimo campo (que debería ser donde comienza la columna COMANDO en la salida original)NR>1es para las siguientes líneas (datos). Estamos cambiando el quinto campo:
$5=int(10*$5/1024)/10"M" cambia el valor a Megabytes con un decimal y agrega el sufijo "M".%-10ssignifica scadena, 10para 10 caracteres de ancho, -para alinear a la izquierda%8ssignifica scadena, 8para 8 caracteres de ancho, y debido a que no hay -salida de este campo está alineado a la derecha.substr(o, a)toma la subcadena de la línea original (por lo tanto, oalmacenada antes) a partir de la posición acalculada en la condición anterior, por lo que podemos mostrar la salida del comando con espacios preservados.1.23GB. Ej. ):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
psformato? Las pestañas están completamente despojadasawk
man psme sugiere que no existe tal opción incorporada.