Здравствуйте, подскажите пж-та: необходимо мониторить на хосте свободное дисковое пространство, для этого я парсю вывод команды 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
Ошибка в том, что эта конструкция запускает команду cat $project/file_df, задав переменной окружения free_space пустое значение. В же явно хотели записать в переменную вывод команды, это делается так:
Я надеюсь вы понимаете, что такая конструкция достаточно ненадежна. И при добавлении в систему дополнительного устройства (той же флешки), вы внезапно можете мониторить совершенно другую файловую систему.
Я уж не говорю про опцию -h. Когда места останется около 1G, оно начнет показывать значения в мегабайтах, которые будут в разы больше предыдущих гигабайтов. И ваш мониторинг будет, мягко говоря, немного привирать.
Лучше сделать хотя бы что-то в духе df -m /mount/to/monitor | awk '{print $4}'