On 25/04/2022 15:32, konsolebox wrote:
On Mon, Apr 25, 2022, 20:45 Pádraig Brady, <p...@draigbrady.com
<mailto:p...@draigbrady.com>> wrote:
On 24/04/2022 11:45, konsolebox wrote:
> But this could work if there exists an option like -S which allows
> tail to wait for N seconds before considering input as "stopped" and
> then displaying currently absorbed input.
>
> Current workaround would be to use a temporary file and use sleep or
> maybe some repeated inotify checks before running second tail but it's
> messy.
I'm not sure we need a separate option for this.
tail(1) will promptly act upon closed input,
so we can organize to close input upon a count
(with head -n, or grep -m), or after a time with timeout(1).
How about:
timeout 10 \
tail -f /var/log/messages -n +1 |
grep -e something |
tail
If that didn't suffice, you could organize things to
get the pid of a sleep process to pass to tail's --pid option:
sleep 10 & sleep_pid=$!
tail --pid=$sleep_pid -f /var/log/messages -n +1 |
grep -e something |
tail
But the goal here is not to terminate "tail -f" after a few seconds but limit
filtered output to 10 lines and still keep reading incoming messages.
If you mean that another `tail -f | grep` should run after first set
terminates, ensuring proper continuity if even possible would still be
difficult, and it will not work on streams.
So far this is how I do it and it's awkward:
tail -f /var/log/messages -n +1 | grep -e something > temp & pid=$!
inotifywait -mqq -t 1 temp
tail -f --pid="$pid" temp
rm temp
Oh you want the timeout reset after any data is passed.
I.e. only stop when no data has arrived within X seconds.
The read(1) builtin may suffice for that?
tail -f /var/log/messages -n +1 |
while IFS= read -r -t10; do printf '%s\n' "$REPLY"; done |
grep -e something |
tail
If we added an option to tail(1) then it could be more flexible,
like --max-wait-time=... to close/ignore a file after wait time
has passed without any data, which would work with multiple files.
I'm not convinced such an option is warranted though
given the external tools available to manage this.
cheers,
Pádraig.