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 개의 프로세스를 제공합니다.
이 정보가 도움이 되었기를 바랍니다.