Answers:
您可以使用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
如果您只想要有关一个特定正在运行的程序的数据,则可以使用而不是多次使用。
注意:-C
如果您想一次获得有关多个程序的信息,则可以在同一命令行上使用多个选项。例如
ps -C iceweasel -C chromium -C opera
ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...
例如寻找一个名为foo的Java程序。
您可以制作一个shell脚本
#!/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
这将提供最高的内存使用率应用程序。
sed -e 's/^[[:space:]]*//'
应该解决它。您的脚本还会用同一命令累加进程的内存使用吗?