¿Cómo hacer que el comando ps muestre memoria en mb en lugar de kb?
11
El comando ps de Linux muestra diferentes usos de memoria como rss, tamaño en kb por defecto. ¿Hay alguna manera de mostrar en mb o gb como ls -s --human-readablehace?
La falta de mención man psme sugiere que no existe tal opción incorporada.
Ulrich Schwarz
Respuestas:
20
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:
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:
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.
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 tarde
a=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".
printf muestra todos los campos en forma de columna:
%-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.
man ps
me sugiere que no existe tal opción incorporada.Respuestas:
AFAIK no puede lograrlo simplemente por
ps
comando puro con opciones. Sin embargo, puede usar algunos procesadores de texto comoawk
y hacer que haga lo que quiera: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: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.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
significas
cadena,10
para 10 caracteres de ancho,-
para alinear a la izquierda%8s
significas
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óna
calculada en la condición anterior, por lo que podemos mostrar la salida del comando con espacios preservados.fuente
1.23GB
. Ej. ):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
ps
formato? Las pestañas están completamente despojadasawk