Have bash рукописный шрифт run against в live file - Is it possible?

I have в рукописный шрифт гve written and (finally) have it working like I want it to, эксперт long схвати I run it against в static file. Is there в way to tail в live file and have the рукописный шрифт perform its actions against the tail file эксперт each line ты ешь into the live file?

I tried

tail -f logfile.txt | ./myscript.sh

and

./myscript.sh <logfile.txt

But neither of them seem to производит the desired results. My guess is that (in the first example) that myscript.sh won't run until tail-f finishes, which defeats the purpose :)

I don't know why the second example doesn't work... seems like it should, but it reads in all the contents of the file, but not the new lines эксперт they ест into logfile.txt

2
задан 11 December 2015 в 21:35

1 ответ

Вот простое подтверждение концепции:

В myscript.sh:

#!/bin/bash

while read -r line; do
  echo "syslog says: $line"
done

Затем в терминале:

$ tail -n 0 -F /var/log/syslog | ./myscript.sh

(обратите внимание, что я использую -n 0 потому что я не хочу обрабатывать любое предыдущее содержание журнала; если Вы хотите обработать все это, затем изменяют это на -n +1 запустить хвост с первой строки). Я также использую -F вместо -f так, чтобы хвост повторил, если исходный файл станет недоступным - например, в результате того, чтобы быть повернутым.

В другом терминале

$ logger "logger says hello"

Необходимо сразу видеть в первом терминале что-то как

syslog says: Dec 11 13:48:54 T61p steeldriver: logger says hello

Если это не работает, возможно, это - потому что то независимо от того, что пишет в файл журнала, делает так буферизированным способом, или Вы обрабатываете его буферизированным способом в рамках Вашего сценария (grep иногда преступник: это имеет a --line-buffered опция, которая может быть полезной в этом случае).

1
ответ дан 2 December 2019 в 05:00

Другие вопросы по тегам:

Похожие вопросы: