[unix] 프로세스 대신 명령 그룹의 요약 메모리 사용량을 보는 방법

top / htop과 같은 도구를 사용할 때 유사한 프로세스를 그룹화하는 방법이 있습니까? 때로는 메모리를 소비하는 것을 알고 싶고 일부 프로그램 (주로 브라우저)은 여러 프로세스를 사용하고있어 실제로 사용하는 RAM의 양을 읽기가 어렵습니다.

지금까지 나는 다음과 같은 것을 생각해 냈습니다.

ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc



답변

ps -C특정 명령 이름에 대한 프로세스 정보 만 표시 하는 데 사용할 수 있습니다 .

예 :

ps -C opera

그런 다음 다른 ps옵션을 사용하여 원하는 데이터 만 추출 할 수 있습니다 . 특히, h또는 --no-headers열 헤더를 억제하고, -o pmem프로세스에 의해 사용되는 메모리의 백분율을 표시.

ps -C opera --no-headers -o pmem

그러면 줄당 하나씩 많은 메모리 사용률이 제공됩니다.

데이터를 합산하는 수많은 방법이 있습니다. 자주 사용하는 방법 중 하나는 xargs로 파이프하여 공백으로 구분 된 요소가있는 한 줄로 변환 한 다음 sed로 변환하여 공백을 +기호 로 변환 한 다음 bc수행하는 것입니다. 계산. 배관 paste -sd+작업 방법은 물론 또는 다른 방법 보다 낫습니다 | xargs | sed.

이 모든 것을 종합하면 다음과 같은 이점이 있습니다.

ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc

또는

ps -C opera --no-headers -o pmem | paste -sd+ | bc

즉, ps -C특정 실행중인 프로그램에 대한 데이터 만 원하는 경우 여러 greps 대신 사용할 수 있습니다 .

참고 : -C한 번에 둘 이상의 프로그램에 대한 정보를 원하는 경우 동일한 명령 줄에서 여러 옵션을 사용할 수 있습니다 . 예 :

ps -C iceweasel -C chromium -C opera


답변

쉘 스크립트를 만들 수 있습니다

#!/bin/bash
Total=`cat /proc/meminfo | head -n1 | awk '{print $2}'`
max_usage=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $1}'`
name=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $NF}'`
echo "$Total $max_usage $name"
echo "($max_usage*$Total)/(100*1024)" | bc

이것은 가장 높은 mem 사용량 응용 프로그램을 제공합니다.


답변

내부에서 다음을 사용할 수 있습니다.

Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER

시도해 볼 수도 있습니다.

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

이 명령은 메모리 사용량별로 상위 5 개의 프로세스를 제공합니다.

이 정보가 도움이 되었기를 바랍니다.


답변

termsql 로 단순화 할 수 있습니다 .

ps -C chromium-browser -o pmem | termsql -1 "SELECT SUM([%MEM]) FROM tbl"

현재는 PyPI에 업로드되지 않으며 다음 과 같이 시스템 전체에만 설치할 수 있습니다 ( setup.py약간 깨졌습니다) sudo pip install https://github.com/tobimensch/termsql/archive/master.zip.


답변