#! /bin/sh # ############################################################################# NAME_="lowswap" HTML_="monitor swap memory space" PURPOSE_="notify when free swap memory is less then n Megabytes" SYNOPSIS_="$NAME_ [-hl] " REQUIRES_="standard GNU commands, xmessage" VERSION_="1.3" DATE_="1999-08-10; last update: 2004-09-20" AUTHOR_="Dawid Michalczyk " URL_="www.comp.eonworks.com" CATEGORY_="admin" PLATFORM_="Linux" SHELL_="bash" DISTRIBUTE_="yes" # ############################################################################# # This program is distributed under the terms of the GNU General Public License usage () { echo >&2 "$NAME_ $VERSION_ - $PURPOSE_ Usage: $SYNOPSIS_ Requires: $REQUIRES_ Options: , an integer referring to Mb -h, usage and options (this help) -l, see this script" exit 1 } # enabling extended globbing shopt -s extglob # option handling case $1 in -h) usage ;; -l) more $0; exit 1 ;; +([0-9])) # arg1 can only be an integer # check if required command is in $PATH variable which xmessage &> /dev/null [[ $? != 0 ]] && { echo >&2 the required \"xmessage\" command is not in your PATH; exit 1; } while :;do swap_free=$(free -mo | grep Swap | { read a b c d; echo $d; }) if (( $swap_free < $1 ));then # display windowed message if x is running; ring a bell ps -aux | grep -q xinit if [ $? = 0 ];then xmessage -center Swap is running low! Less then ${1}Mb left. echo -en \\a exit 0 else # write message to terminal and ring a bell echo -e \\a Swap is running low! Less then ${1}Mb left. exit 0 fi fi sleep 60s # how often we check swap done ;; *) echo invalid argument, type $NAME_ -h for help ; exit 1 ;; esac