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
Вот простое подтверждение концепции:
В 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
опция, которая может быть полезной в этом случае).