Apr 12, 2009

Monitoring Disk Usage In Linux

One of the routine job of a Linux administrator to monitor the Disk space continuously. Normal people will write a simple script to check the disk space and report to system administrator through email. Good Idea,but here i am telling a new one which will continuously monitor your Disk and report if it cross a preset value. This will run as a cronjob.

#!/bin/bash
#Script for monitoring Disk Usage
#Author BipinDas,Arab Open University.
ADMIN="yourname@yourdomain.com"
# set alert level 80% is default
ALERT=80
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
#echo $output
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) $(hostname -i) as on $(date)" |
mail -s "Alert: Almost out of disk space $usep " $ADMIN
fi
done

Save it as disk_monitor.sh in your scripts folder.

Open Crontab Editor

vi /etc/crontab

*/5 * * * * root /path/to/script/disk_monitor.sh

Perfect,This will frequently check your Disk and inform once it cross the limit.

4 comments:

ശ്രീ said...

:)

സമാധാനം said...

ശ്രീ...ചിരിയുടെ അര്ത്ഥം മനസ്സിലായില്ല.

ശ്രീ said...

ഇത്തരം ഉപയോഗപ്രദമായ നുറുങ്ങുകള്‍ പങ്കു വയ്ക്കുന്നതിനുള്ള നന്ദി സൂചകമായി തന്നെയാണ് :) ഇട്ടിട്ടു പോയത്. ആ സമയത്ത് കുറച്ച് തിരക്കിലായിരുന്നതിനാല്‍ ഇങ്ങനെ ഒരു കമന്റെഴുതാനുള്ള സാവകാശം കിട്ടിയില്ലെന്ന് മാത്രം. എങ്കിലും വന്നു, കണ്ടു, ഇഷ്ടമായി എന്ന് സൂചിപ്പിയ്ക്കണം എന്ന് തോന്നി.

ഇനിയും തുടരുക... ആശംസകള്‍!

Vikas said...

Hi,

Instead of using a lengthy script, this is also an alternative.

-sh-3.00$ df -kh | sed 's/%//' | awk '$5 > '$a'' | awk '{print $1 " " $4 " " $5 "% " $6 }'
Filesystem Avail Use% Mounted
/dev/sdb1 23G 69% /sudologs