用于获取用户内存消耗的脚本或命令

时间:2011-09-13 15:14:35

标签: python unix memory

我的主机为我的网站提供了有限的RAM,我想通过在cron中运行脚本来监控内存消耗。

我已经编写了这个命令:

ps -u xxxxxx -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'

但我的主持人计算记忆的方式有一个特殊性。它忽略了运行时间不到5分钟的进程。

您是否知道可以向我显示忽略短期进程的总使用内存的命令或Python脚本?

1 个答案:

答案 0 :(得分:1)

使用etime查找进程的已用时间。然后,您可以修改awk命令以检查此时间是否大于5分钟。

ps -u xxxxxx -o rss,etime,command | ...

经过时间的格式为[[dd-]hh:]mm:ss。这意味着时间可能是00:30,12:57:39甚至4-08:27:12。您可以使用awk来解析此时间格式并将其转换为秒。几秒钟后,检查它是否超过5分钟,如果是,则将其添加到运行的rss总数中。

以下是执行此操作的示例脚本:

ps -u xxxxxx -o rss,etime,command | grep -v peruser | grep -v RSS | sed 's/^ *//g' | awk '{
 split($2,arr,":") #split time on :
 len=0
 for(i in arr) len++ 
 secs=arr[len]+60*arr[len-1] #convert to seconds
 if(len>2) secs=secs+substr(arr[len-2],length(arr[len-2])-1)*60*60

 if(secs>5*60) { #check if more than 5 minutes
     print $0 #print out the process
     sum+=$1 
 }
} END{print "SUM:"sum/1024}'