следуйте лог-файлу с tail и exec по событию - PullRequest
0 голосов
/ 19 июня 2019

Интересно, есть ли более простой способ запустить tail -f или -F в лог-файле и выполнять команду каждый раз, когда упоминается специальное ключевое слово?

это мое рабочее решение, но мне оно не нравится по следующим причинам:

  • мне нужно писать новые строки для каждого совпадения в файле журнала, чтобы избежать бесконечного цикла
  • tail не следует точно за журналом, он может пропустить некоторые строки во время выполнения команды
  • Я не знаю об использовании процессора из-за высокой частоты

пример:

#!/sbin/sh
while [ 1 ]
  do
    tail -n1 logfile.log | grep "some triggering text" && mount -v $stuff >> logfile.log
done

я попробовал следующее, но grep не даст код возврата до разрыва трубы

#!/sbin/sh
tail -f -n1 logfile.log | grep "some triggering text" && mount $stuff

я запускаю скрипт на Android, который ограничен
busybox ash

edit:
проблема связана с grep.grep не даст код возврата до последней строки.что мне нужно, это код возврата для каждой строки.может быть, опция --follow для grep, или sed, awk, или пользовательская функция, которая работает с tail --follow

...