Мониторинг дискового пространства в Linux

Автор: Admin

Дата:2013-02-05

Мониторинг дискового пространства (Bash)

Первый скрипт производит разбор файла полученного при помощи программы "df", определяя размер диска и отсылает сообщение, если размер диска становится меньше 500 мб.

# vi monit_dev.sh

#!/bin/bash
df -m | sed '{3,$D;}' | gawk '{print $n}' > /root/df

usage=$( sed '1d' /root/df > /root/df1 | gawk '{print $4}' /root/df1 )
dev=$( gawk '{print $1}' /root/df1 )
min=500
date=`date +%m/%d/%Y`
mail=/bin/mail
user=ваше_имя@ваш_домен

if [ $usage -lt $min ]
then
echo "Disk $dev is $usage.MB " | $mail -s "Attention Date:$date Disk $devFull" $user
else
echo "$dev is $usage.MB > 500.mb" > /dev/null
fi


где:
1) sed '{3,$D;}' - обрезает все начиная с 3 строки
gawk '{print $n}' > /root/df - выводит в файл все
2) sed '1d' /root/df - обрезает первую строку и выводит в файл /root/df1
gawk '{print $4}' /root/df1 - вырезает 4 столбец в котором находится используемое пространство диска
В результате в переменную usage закладывается это число
3) dev=$( gawk '{print $1}' /root/df1 ) - вырезает первый столбец
В результате переменная dev бедет содержать наименование диска

После этого, все очень просто

Переменная $min содержит число 500 и Если переменная $usage окажется меньше переменной $min тогда отослать письмо

Хотя вместо этого

df -m | sed '{3,$D;}' | gawk '{print $n}' > /root/df
usage=$( sed '1d' /root/df > /root/df1 | gawk '{print $4}' /root/df1 )

Можно было использовать и такой вариант

usage=$(df -m /dev/hda1 | sed '1d' | gawk '{print $4}')
echo "$usage"

Осталось все это поместить в crontab

Еще один скрипт производит мониторинг разделов, сортирует по максимальному, выводит только 20 записей и добавляет в начало текст Usage и DIR и после первой строки --------  ---


# vi dir

#!/bin/bash
home_dir="/home/"
for cheсk_dir in $home_dir
        do
        du -m $cheсk_dir |
        sort -rn |
        sed '{20,$D}' |
        gawk '{printf $1 " " "\t\t" $2 "\n"}' |
        sed '1i\Usage_MB \tDIR' |
        sed '1a\---------- \t----------------'
echo $home_dir
done

# sh dir
Usage_MB          DIR
----------               ----------------
29546                  /home/
28210                  /home/awer
23390                  /home/awer/VirtualBox

Количество просмотров: 5347

Комментарии к статье:

Добавить комментарий

Введите сумму с картинки

© Plutonit.ru - Администрирование, настройка Linux и Windows 2009 - 2024