Есть ли дешевый способ отслеживать файл журнала, например tail -f log.txt
, а затем, если появится что-то вроде [error]
, выполнить команду?
Спасибо.
Есть ли дешевый способ отслеживать файл журнала, например tail -f log.txt
, а затем, если появится что-то вроде [error]
, выполнить команду?
Спасибо.
Я также обнаружил, что вы можете использовать awk для отслеживания шаблона и выполнения некоторых действий, когда шаблон найден:
tail -fn0 logfile | awk '/pattern/ { print | "command" }'
Это выполнит команду, когда шаблон будет найден в журнале. Команда может быть любой командой unix, включая сценарии оболочки или что-то еще.
Еще более надежным подходом является monit. Этот инструмент может отслеживать очень многие вещи, но одна из них заключается в том, что он легко отслеживает один или несколько журналов, сопоставляется с регулярным выражением и затем запускает скрипт. Это особенно полезно, если у вас есть коллекция файлов журналов для просмотра или более одного события для запуска.
Лучше и проще:
tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
tail -fn0 logfile
, похоже, истек, поскольку файл журнала HTTP-сервера быстро переименовывается и сжимается gzip. Думаю, скрипт по-прежнему отслеживает старый файловый дескриптор? Есть ли способ автоматического обновления файла inode или чего-то еще через некоторое время для команды tail
?
- person est; 10.12.2010
grep -q
, чтобы установить код возврата без отображения совпадающих строк.
- person Adam Liss; 14.07.2013