2014-01-07 7 views
0

Как я могу получить предупреждение, если размер файла перестанет расти?Активность журнала регистрации журнала

tail -f mytext.txt 

Строки шоу, прилагаемые к файлу.

mail -s "Alert" [email protected] 

может отправить предупреждение.

Я немного потерял, как вы можете объединить эти два, или если есть более эффективный способ мониторинга активности файла.

+0

То, что вы хотите сделать, это немного неоднозначным. Вы ожидаете, что этот файл будет постоянно расти без остановок? Большинство файлов журналов не * постоянно * растут. Если нет, вы ищете меньше определенного количества байтов в течение определенного периода времени? –

+0

, вы можете протестировать mtime журнала и предупредить вас, если он не был изменен в течение некоторого количества минут. –

ответ

0

Другой способ сделать это cronjob (если интервал более 1 минуты, интервал поддержки некоторых систем менее 1 минуты) и проверить только значение md5 на нем (в некоторых системах только команда md5sum, вам нужно настроить)

Включите cronjob, он будет работать каждые 10 минут.

0,10,20,30,40,50 * * * * bash /FULL_PATH/detect.sh 

Вот обнаружить скрипт detect.sh

#!/bin/bash 

file="mytext.txt" 

mv /var/tmp/md5OfFile /var/tmp/Oldmd5File 
md5 $file > /var/tmp/md5OfFile 
# or md5sum $file > /var/tmp/md5OfFile 

diff /var/tmp/md5OfFile /var/tmp/Oldmd5File >/dev/null && echo "AAAARGH!" |mailx -s "Alert" [email protected] 
+0

Это очень элегантное решение, спасибо! – Paolo

2

Вы можете просто посмотреть размер файла, затем записать текущий размер и после определенного интервала времени, проверить размер снова и, если он не вырасти, сделать свое предупреждение. Что-то вдоль линий:

#!/bin/sh 

file="/tmp/somefile" 
size=$(wc -c < "$file") 
interval="5" 

while true; do 
    sleep $interval 
    newsize=$(wc -c < "$file") 
    if [ $size -ge $newsize ]; then 
    echo "AAAARGH!" 
    fi 
    size="$newsize" 
done 

Заменить эхо с помощью команды почты или что-то вроде этого, интервала и файл с чем-то более разумным, чтобы сделать это на самом деле работает для вас.

+0

не разбирайте ls, используйте 'size = $ (stat -c% s/tmp/somefile)' –

+0

Редактирование более чем приветствуется. Вы также можете иметь в виду, что 'stat -c' не работает во всех системах, например. Дарвин. –

+2

@glennjackman 'size = $ (wc -c jordanm

Смежные вопросы