Por isso, estou adicionando um aviso de pouco espaço no disco rígido ao meu servidor doméstico. Eu gosto da aparência do seguinte que vem de aqui :
ADMIN="[email protected]"
# 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
Como eu acho prudente entender qualquer script que você executa antes de realmente executá-lo, eu estive olhando para as man pages para descobrir como cada uma das seções individuais do programa funciona e parece bastante simples. A única coisa que não entendo é o -ge
flag na instrução condicional if
. De acordo com a bash introdução à página , estes seriam avaliados como verdadeiros se o existe". Como essa lógica se aplica quando comparo duas variáveis? Em outras linguagens de programação, usaria a sintaxe ==
. Da mesma forma, por que estamos comparando os valores de 90
(conforme relatado por df) a 10
, que é a variável de ALERT
, presumo que isso tenha algo a ver com a maneira como a condicional avalia? Não tenho motivos para acreditar que este código não funcionará. Gostaria apenas de saber por que antes de adicioná-lo a um script.
Obrigado.