Интересно, есть ли более простой способ запустить 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