Recuperando o valor do tamanho da memória virtual (VSZ) de um único processo

0

Eu gostaria de obter o valor VSZ de um processo específico em execução no servidor Linux

O seguinte comando:

ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'   

está buscando todo o uso de memória de processo alta para baixo.

Como posso buscar apenas o valor (VSZ) de um único processo?

Digamos que eu queira obter o valor VSZ de "proxyfarm". Como posso conseguir isso usando o comando:

ps ux | grep httpd | grep proxyfarm    can fetch proxyfarm complete details.But, i need only VSZ of it.
    
por sundar 01.10.2018 / 15:45

2 respostas

0

POSIXly,

ps -o vsz= -p "$pid"

imprimiria o tamanho do processo de id $pid na memória (virtual) em unidades de 1024 bytes como um inteiro decimal.

Com o utilitário ps do procps no Linux, se você substituir -p "$pid" por -C proxyfarm , terá essas informações para todos os processos que tiverem proxyfarm como nome.

O equivalente POSIX, assumindo nomes de processos, não contém espaços em branco ou novas linhas:

ps -Ao vsz= -o comm= | awk '$2 == "proxfarm" {print $1}'

Você pode substituir comm por args para pesquisar processos cuja lista de argumentos inicie com a palavra proxfarm em vez do nome do processo.

    
por 01.10.2018 / 16:03
0

Verifique os valores do tamanho da memória virtual (vsz) em /proc/<PID>/stats

De acordo com / proc man , a coluna # 23 de /proc/<PID>/stats representa valores vsz em bytes .

Por exemplo, PID é 3917 então:

cat /proc/3917/stat | cut -d" " -f23

Importante notar que os valores de vsz relatados em /proc/PID/stats são estimados em bytes , enquanto a saída do comando ps -o vsz= -p "$pid" é estimada em kibibyte ou kib (1 KiB é igual a 1024 bytes).

Para converter a saída de vsz em /proc/PID/stat de byte para kib :

cat /proc/3917/stat | cut -d" " -f23 | xargs -n 1 bash -c 'echo $(($1/1024))' args
    
por 01.10.2018 / 16:04