Quindi sto cercando di aggiungere un avviso di spazio su disco rigido insufficiente al mio server di casa. Mi piace l'aspetto di quanto segue che viene da qui :
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
Poiché trovo prudente comprendere qualsiasi script che esegui prima di eseguirlo, ho esaminato le pagine man per capire come funziona ciascuna delle singole sezioni del programma e sembra abbastanza semplice. L'unica cosa che non capisco è la -ge
bandiera nell'istruzione if
condizionale. Secondo la bash introduzione a if page , entrambi sarebbero valutati su true se il "file esiste". In che modo questa logica passa vera quando sto confrontando due variabili? In altri linguaggi di programmazione userei la ==
sintassi. Allo stesso modo perché stiamo confrontando i valori di 90
(come riportato da df) con 10
cui è la variabile diALERT
, Suppongo che questo abbia qualcosa a che fare con il modo in cui il condizionale valuta? Non ho motivo di credere che questo codice non funzionerà, vorrei solo sapere perché prima di aggiungerlo a uno script.
Grazie.
==
)