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

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

top/htop과 같은 도구를 사용할 때 유사한 프로세스를 그룹화하는 방법이 있습니까? 가끔은 무엇이 내 메모리를 소비하고 있는지 알고 싶은데, 특정 프로그램(주로 브라우저)이 여러 프로세스를 사용하고 있어 실제로 얼마나 많은 RAM을 사용하고 있는지 읽기가 어렵습니다.

지금까지 나는 다음과 같은 것만 생각했습니다.

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

답변1

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

예를 들어

ps -C opera

ps그런 다음 다른 옵션을 사용하여 원하는 데이터를 추출 할 수 있습니다 . 특히 열 머리글을 h억제 하고 프로세스에서 사용하는 메모리 비율을 표시합니다.--no-headers-o pmem

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

이렇게 하면 한 줄에 하나씩 많은 메모리 사용률이 제공됩니다.

이와 같이 데이터를 합산하는 방법에는 여러 가지가 있습니다. 제가 자주 사용하는 방법 중 하나는 xargs로 파이프하고, 요소가 공백으로 구분되는 줄로 변환한 다음, sed로 파이프하고, 공백을 +기호로 변환한 다음, 계산을 수행하기 위해 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하나의 특정 실행 프로그램에 대한 데이터만 필요한 경우 대신 여러 grep을 사용할 수 있습니다.

참고: -C한 번에 두 개 이상의 프로그램에 대한 정보가 필요한 경우 동일한 명령줄에서 여러 옵션을 사용할 수 있습니다. 예를 들어

ps -C iceweasel -C chromium -C opera

답변2

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

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개 프로세스를 제공합니다.

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

답변3

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

#!/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

이렇게 하면 애플리케이션에 가장 높은 메모리 사용량이 제공됩니다.

답변4

이는 다음과 같이 단순화될 수 있습니다.용어 SQL.

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

현재 업로드가 없습니다., 또한 시스템 전체( setup.py약간 손상됨) 에만 설치할 수 있습니다 sudo pip install https://github.com/tobimensch/termsql/archive/master.zip.

termsqlPyPI에서 사용 가능pipx install termsql, 예를 들어 다음을 통해 설치할 수 있습니다 .

관련 정보