Поэтому я собираюсь добавить предупреждение о нехватке места на жестком диске на мой домашний сервер. Мне нравится внешний вид , после чего приходит от сюда:
ADMIN="yourmail@example.com"
# set alert-level 90 % standard
ALERT=10
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "space low on \"$partition ($usep%)\", on server $(hostname) at $(date)" |
mail -s "Alert: Free space low, $usep % used on $partition" $ADMIN
fi
done
Поскольку я считаю разумным понимать любой сценарий, который вы запускаете перед тем, как запускать его, я смотрел справочные страницы, чтобы выяснить, как работает каждый из отдельных разделов программы, и это выглядит довольно просто. Единственное, чего я не понимаю, это флаг -ge
в условном выражении if
. Согласно введению bash для страницы if они оба будут иметь значение true, если "файл существует". Как эта логика проходит правда, когда я сравниваю две переменные. В других языках программирования я бы использовал синтаксис ==
. Точно так же, почему мы сравниваем значения от 90
(как сообщает df) с 10
который является переменной ALERT
, я предполагаю, что это как-то связано с тем, как условные вычисления оцениваются? У меня нет оснований полагать, что этот код не будет работать, я просто хотел бы знать, почему, прежде чем добавлять его в скрипт.
Благодарю.