linux統計某類進程所佔內存之和

#!/bin/bash
#說明: 文件名稱 htop_postgres.sh 
# 下面代碼統計 postgres進程所佔內存之和
# 使用方法: echo htop_postgres.sh >> /root/mem.log
# ----------------------------- 
# 也可將postgers參數化: 
#   p_name=$1
#   ps aux | grep $p_name | sort -r -k2 | awk '!a[$2]++{print}' | awk '{print $6}'
#	or
#   簡化:
#   ps aux | grep $p_name | awk '{print $6}'
# ----------------------------- 
# 也可查詢所有進程使用內存之和:  
#   ps aux | grep -v "TIME COMMAND" | sort -r -k2 | awk '!a[$2]++{print}' | awk '{print $6}'
#	or 
#   簡化:
#   ps aux | grep -v "TIME COMMAND" | awk '{print $6}'

sum=0

# sort -r -k2 按第2列逆序排序
# awk '!a[$2]++{print}' 以第2列爲基準進行去重
mem_data_arr=$(ps aux | grep ^postgres | sort -r -k2 | awk '!a[$2]++{print}' | awk '{print $6}')
#  簡化:
#   mem_data_arr=$(ps aux | grep ^postgres | awk '{print $6}')

#echo $mem_data_arr
#echo "---------------------------------------------------"
for n in $mem_data_arr
do
  sum=$[sum+$n]
done
echo `date "+%Y-%m-%d %H:%M:%S"`"       "$[$sum/1024]"M"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章