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
.
termsql
예PyPI에서 사용 가능pipx install termsql
, 예를 들어 다음을 통해 설치할 수 있습니다 .