#!/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"