Shellscript для мониторинга файла журнала, если ключевое слово срабатывает, а затем выполнить команду? - PullRequest
34 голосов
/ 02 декабря 2010

Есть ли дешевый способ отслеживания файла журнала, например tail -f log.txt, а затем, если появляется что-то вроде [error], выполнить команду?

Спасибо.

Ответы [ 5 ]

50 голосов
/ 02 декабря 2010
tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done
13 голосов
/ 19 апреля 2013

Я также обнаружил, что вы можете использовать awk для отслеживания шаблона и выполнения некоторых действий при обнаружении шаблона:

tail -fn0 logfile | awk '/pattern/ { print | "command" }'

Эта команда будет выполняться, когда шаблон найден в журнале.Командой может быть любая команда unix, включая сценарии оболочки или что-либо еще.

4 голосов
/ 14 июля 2013

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

0 голосов
/ 26 июля 2017

Тесто и просто:

tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
0 голосов
/ 02 мая 2016

Простое автоматизированное решение, охватывающее множество сценариев:

ИСПОЛЬЗОВАНИЕ:

logrobot localhost [default-dir],fixer,[exit-codes],[command/script-to-run-per-exit-code] [feature] [logfile] [age] [str-1] [str-2] [WARN] [CRIT] [tag] [option]

Пример:

logrobot  localhost  /tmp/logXray,fixer,0y-1y-2y,0-uname,1-who,2-uptime  autonda  /var/log/kern.log  60m  'error'  '.'  1  2  app_err_monitor  -ndshow

С помощью этого инструмента вы можете отслеживать определенные шаблоны в файле журнала и затем запускать команду или сценарий, когда шаблоны найдены ... или НЕ найдены!

Сценарии или команды могут быть настроены на выполнение на основе порогов и кодов выхода.

Инструмент можно загрузить напрямую здесь .

...