это было давно, и я, кажется, не могу вспомнить, как это сделать. Я пытаюсь найти файл журнала для слова или слов и отправить электронное письмо, если он не существует в течение последних пятнадцати минут (я буду устанавливать задание cron каждые пятнадцать минут, если нет лучшего способа сделать это), что у меня есть до сих пор является
if grep --quiet 'SEND OK' /logfile; then
echo exists
else
echo not found | mail -s "houston we have a problem" email@gmail.com
fi
Могу ли я использовать tail для проверки файла журнала за последние 15 минут? | tail -15 помогает?
и могу ли я дать ему "если" и написать мне, если он не найдет ключевое слово за последние 15 минут, поскольку он будет запускаться каждые пятнадцать минут
Буду очень признателен за любую помощь
Если в вашем журнале есть информация о дате и времени (я так думаю), вы можете превратить свой grep в другой grep для фильтрации даты и использовать -A {{big_number}}, чтобы получить все строки с 15 минут назад до настоящего времени.
Что-то похожее:
grep "$(date -d "15 minutes ago" +"{{your_log_date_format}}")" -A {{ big_number }} /logfile | grep --quiet 'SEND OK'
Это грязный способ (у вас могут возникнуть проблемы, если ваш {{big_number}} меньше, чем количество строк, записанных в журнале за последние 15 минут).
Кредиты идут: http://geek.co.il/2010/04/08/script-day-output-the-tail-of-a-log-based-on-time.
Если вы пытаетесь просмотреть файл за последние N минут (по крайней мере, содержимое файла, записанного с момента последнего запуска вашего скрипта), вам нужно что-то вроде logtail
(http://linux.die.net/man/8/logtail). Возможно, это уже есть в вашем дистрибутиве. tail
сам по себе не поможет, так как даст вам только последние N строк / символов независимо от того, когда они были написаны.