Respuestas:
AFAIK no puede lograrlo simplemente por ps
comando puro con opciones. Sin embargo, puede usar algunos procesadores de texto como awk
y hacer que haga lo que quiera:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
Esto toma el resultado de ps
y 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 -t
el 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 printf
formato 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==1
la 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>1
es 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".%-10s
significa s
cadena, 10
para 10 caracteres de ancho, -
para alinear a la izquierda%8s
significa s
cadena, 8
para 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, o
almacenada antes) a partir de la posición a
calculada 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;}'
ps
formato? Las pestañas están completamente despojadasawk
man ps
me sugiere que no existe tal opción incorporada.