#!/bin/bash

############################################################################
#
# Script for monitoring system-wide memory usage.
#
# Copyright (C) 2009 Bart Van Assche <bvanassche@acm.org>.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
############################################################################

#########################
# Function definitions  #
#########################

function usage {
  echo "Usage: $0 [-h] [-i <interval>]"
  echo "        -h - display this information."
  echo "        -i - monitoring interval in seconds."
}


#########################
# Default settings      #
#########################

interval=10


#########################
# Argument processing   #
#########################

set -- $(/usr/bin/getopt "hi:" "$@")
while [ "$1" != "${1#-}" ]
do
  case "$1" in
    '-i') interval="$2"; shift; shift;;
    '--') shift;;
    *)    usage; exit 1;;
  esac
done

if [ "$#" != 0 ] || [ "${interval}" -le 0 ]; then
  usage
  exit 1
fi


####################
# Performance test #
####################

printf "%-10s " "Time"
cat /proc/meminfo |
  while read -r label number unit
  do
    printf " %10s" "${label%:}"
  done
echo

while true
do
  printf "%-10d" "$(date +%s)"
  cat /proc/meminfo |
    while read -r label number unit
    do
      printf " %10d" "${number}"
    done
  echo
  sleep "${interval}"
done
