срабатывание одного и того же условия

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
safronowmax
Сообщения: 103

срабатывание одного и того же условия

Сообщение safronowmax »

Здравствуйте, подскажите пж-та: необходимо мониторить на хосте свободное дисковое пространство, для этого я парсю вывод команды df -h и записываю его в файл file_df (переменная free_space). Далее я задаю пороговое значение trigger_free_space в файле properties.ini и провожу сравнение переменных free_space и trigger_free_space и пока для тестирования я вывожу на экран разные сообщения. Но почему-то всегда вне зависимости от значения переменной trigger_free_space срабатывает условие else, т.е. выводится "место практически не изменилось". Пробовал задавать значение trigger_free_space и больше free_space и меньше, ничего не меняется. В чем может быть проблема?
Вот сам скрипт:

Код: Выделить всё

#!/bin/bash
source ./properties.ini
project=/bash_projects/3
df -h |awk '{print $4}' | sed 's/.$//' |head -n 4 |tail -n 1 > $project/file_df
free_space= cat $project/file_df
if [[ "$free_space" -gt "$trigger_free_space" ]]; then
echo "Свободное место на диске сильно уменьшилось"
else echo "место практически не изменилось"
fi
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: срабатывание одного и того же условия

Сообщение Bizdelnick »

Для начала уберите опцию -h у df (и, соответственно, костыль с sed).

Здесь ошибка:
safronowmax писал(а):
18.10.2017 16:29

Код: Выделить всё

free_space= cat $project/file_df


И ещё, если Вас интересует одна конкретная файловая система, укажите путь к точке монтирования аргументом df, а head и tail уберите.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
safronowmax
Сообщения: 103

Re: срабатывание одного и того же условия

Сообщение safronowmax »

Здесь ошибка:
safronowmax писал(а):
18.10.2017 16:29

Код: Выделить всё

free_space= cat $project/file_df



Спасибо вам за ответ. Не пойму, а в чем ошибка? Неправильно присвоил значение в переменную?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: срабатывание одного и того же условия

Сообщение Bizdelnick »

Ошибка в том, что эта конструкция запускает команду cat $project/file_df, задав переменной окружения free_space пустое значение. В же явно хотели записать в переменную вывод команды, это делается так:

Код: Выделить всё

free_space=$(cat $project/file_df)

А вообще вся эта возня с временными файлами избыточна, проще сразу сделать

Код: Выделить всё

free_space=$(df / | tail -n1 | awk '{print $4}')
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: срабатывание одного и того же условия

Сообщение SLEDopit »

safronowmax писал(а):
18.10.2017 16:29
df -h |awk '{print $4}' | sed 's/.$//' |head -n 4 |tail -n 1
Я надеюсь вы понимаете, что такая конструкция достаточно ненадежна. И при добавлении в систему дополнительного устройства (той же флешки), вы внезапно можете мониторить совершенно другую файловую систему.
Я уж не говорю про опцию -h. Когда места останется около 1G, оно начнет показывать значения в мегабайтах, которые будут в разы больше предыдущих гигабайтов. И ваш мониторинг будет, мягко говоря, немного привирать.

Лучше сделать хотя бы что-то в духе df -m /mount/to/monitor | awk '{print $4}'
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: срабатывание одного и того же условия

Сообщение s.xbatob »

есть же готовые решения: nagios, zabbix. Правда, договариваться с ними непросто. Зато когда разберётесь -- они много за чем будут присматривать.
Спасибо сказали:
Ответить