답변:
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
ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...
예를 들어 항상 foo라는 자바 프로그램을 찾는 것이 있습니다.
쉘 스크립트를 만들 수 있습니다
#!/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 사용량 응용 프로그램을 제공합니다.
sed -e 's/^[[:space:]]*//'
하면 문제가 해결되어야합니다. 또한 스크립트는 동일한 명령으로 프로세스의 메모리 사용량을 추가합니까?