LinuxForum.Fans
Тема

BASH скрипт проверки свободного места на диске

Автор: igvozd 9 сообщений 2160 просмотров
30.01.2015 11:52 #412117

Добрый день!

Есть простой скрипт, который вычисляет свободное место на диске и отправляет уведомление на почту;
Скрипт выполняется через cron каждые, например, 10 минут.

Моя проблема в том, что просто засирается почта от большого количества писем, когда отрабатывает скрипт;
Хочется скрипт довести до совершенства: отправлять уведомление на почту только после изменения значения переменной $freespace на единицу

text
#!/bin/bash
freespace=`df -m | grep "/dev/vda2" | awk '{print $4}'`
if [ $freespace -lt 20000 ];
then
echo "Warning!!! On the Server running out of space on your hard drive. Freespace - "$freespace"Mb" | mail -s "FreeSpase on the Server" user@site.ru
fi
30.01.2015 11:57 #412118

Складывай значение этой переменной в файл, например в /tmp. Читай его каждый раз при запуске скрипта и сравнивай. Ну и по условию отправляй письмо.

30.01.2015 12:15 · отредактировано #412122
"igvozd" написал:
Хочется скрипт довести до совершенства: отправлять уведомление на почту только после изменения значения переменной $freespace на единицу
text
FS_FILE="/var/tmp/freespace"
if [ -s "$FS_FILE" ]; then
  OLD_FS=$(cat "$FS_FILE)"
else
  OLD_FS=0
fi
if (( OLD_FS != freespace )); then
  # св. место изменилось
  echo "$freespace" >"$FS_FILE"
  # можно отправлять почту
fi

PS: условие лучше поменять на

text
(( D = OLD_FS - freespace ))
if( D / 1048576 != 0 ))

тогда буде отсылать сообщения, тогда и только тогда, когда разница больше мегабайта (1048576 байт).

30.01.2015 13:27 #412132

А ещё есть системы мониторинга: nagios, zabbix,.. В них, конечно, сначала разобраться надо, зато потом можете легко добавлять контролируемые объекты.

30.01.2015 13:33 #412134

"s.xbatob" написал:
А ещё есть системы мониторинга
а комаров можно из АК-47 расстреливать…
30.01.2015 13:36 #412136

drBatty написал:
[quote="s.xbatob"]А ещё есть системы мониторинга
а комаров можно из АК-47 расстреливать…[/quote]
по опыту - желание мониторить ещё что-нибудь появится очень быстро. Всё равно в конце концов придётся такую систему развернуть.
30.01.2015 13:48 #412138

"s.xbatob" написал:
по опыту - желание мониторить ещё что-нибудь появится очень быстро. Всё равно в конце концов придётся такую систему развернуть.
ну я же не развернул? *CRAZY*

Нет, я понимаю пользу этих систем на крупных серверах в продакшене, но дома-то зачем? На каком-нить небольшом сервачке это тоже излишне.
02.02.2015 13:35 · отредактировано #412536
Vascom написал:
Складывай значение этой переменной в файл, например в /tmp. Читай его каждый раз при запуске скрипта и сравнивай. Ну и по условию отправляй письмо.

Так и сделал! Спасибо!
Воспользовался конструкцией Bash If..then..else..if..then..fi..fi..

text
If [ conditional expression1 ]
then
    statement1
    statement2
    .
else
    if [ conditional expression2 ]
    then
        statement3
        .
    fi
fi

И вместо мегабайтов считаю проценты.

s.xbatob написал:
А ещё есть системы мониторинга: nagios, zabbix,.. В них, конечно, сначала разобраться надо, зато потом можете легко добавлять контролируемые объекты.

Нет смысла на слабой тачке разворачивать систему мониторинга такого уровня.
Да вообще на любой, если можно написать самому то, что надо!

02.02.2015 13:39 #412539
"igvozd" написал:
else if

elif

"igvozd" написал:
[ 2 ]
text
       ((expression))
              The  expression is evaluated according to the rules described below under ARITHMETIC EVALUATION.  If the value of
              the expression is non-zero, the return status is 0; otherwise the return status is 1.  This is exactly equivalent
              to let "expression".
Войдите или зарегистрируйтесь, чтобы ответить.