Esta é uma verificação simples de tempo de modificação de arquivo; as complicações surgem principalmente da possibilidade de até 86.400 alertas por dia (geralmente durante um feriado prolongado é quando esses tipos de coisa quebram), e complicações adicionais de se ou não o verificador de tempo de modificação (ou cron, ou o sistema .. .) estão realmente rodando, se o clock do host está correto (tempo distorcido em virts, clock do BIOS chegando quatro anos no futuro, NTP quebrado, etc).
#!/bin/sh
# what we're checking for mtime changes straying from the current system time
MONITOR=foofile
THRESHOLD=60
# use mtime on this file to avoid frequent alert spam should the above stop
# being updated
LAST_ALERT=barfile
LAST_ALERT_THRESHOLD=60
NOW_MTIME='date +%s'
absmtimedelta() {
delta='expr $NOW_MTIME - $1'
# absolute delta, in the event the mtime is wrong on the other side of
# the current time
echo $delta | tr -d -
}
alertwithlesscronspam() {
msg=$1
if [ ! -f "$LAST_ALERT" ]; then
# party like it's
touch -t 199912312359 -- "$LAST_ALERT"
fi
# KLUGE this stat call is unportable, but that's shell for you
last_mtime='stat -c '%Y' -- "$LAST_ALERT"'
last_abs_delta='absmtimedelta $last_mtime'
if [ $last_abs_delta -gt $LAST_ALERT_THRESHOLD ]; then
# or here instead send smoke signals, carrier pigeon, whatever
echo $msg
touch -- "$LAST_ALERT"
exit 1
fi
}
if [ ! -r "$MONITOR" ]; then
alertwithlesscronspam "no file alert for '$MONITOR'"
fi
MONITOR_MTIME='stat -c '%Y' -- "$MONITOR"'
ABS_DELTA='absmtimedelta $MONITOR_MTIME'
if [ $ABS_DELTA -gt $THRESHOLD ]; then
alertwithlesscronspam "mtime alert for '$MONITOR': $ABS_DELTA > $THRESHOLD"
fi
Talvez, em vez disso, considere uma estrutura de monitoramento padrão , que pode ter suporte para verificações de tempo de modificação de arquivo ou um plug-in para faça isso, alertas personalizáveis, métricas, código melhor que o acima, etc.