我的主机为我的网站提供了有限的RAM,我想通过在cron中运行脚本来监控内存消耗。
我已经编写了这个命令:
ps -u xxxxxx -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
但我的主持人计算记忆的方式有一个特殊性。它忽略了运行时间不到5分钟的进程。
您是否知道可以向我显示忽略短期进程的总使用内存的命令或Python脚本?
答案 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}'