7

I'm using RHEL 4.

The normal tail -F file_name*.log doesn't update when the time flips over to 0000.

Here's what I've tried so far from searching the web, both of which try to use nested tail:

tail -F $(ls -tr file_name*.log | tail -n 1)

tail -F $(fine . -maxdepth 1 -type f -printf "%T@ %p\n" | sort -n | tail n 1 | cut -d' ' -f 2-)

None of these flip over to new files. Plain old tail -F file_name*.log works in my small test cases (while the 2 above don't), but it doesn't work when I'm tailing a real log file.

  • 2
    What exactly are you trying to do? If you are trying to continually tail a file despite a log-rotate taking effect, tail -F filename.log is what you want. I am not following what you are trying to do with all of the extra nesting. – sparticvs Nov 3 '12 at 3:10
4

This won't (can't) work - the sub-shells you're using to determine the latest file only get executed once. The glob won't work because the shell evaluates the wild-card only ONCE.

One way to deal with it would be to use 'watch' to run the whole thing, but that would hack up the output every so many seconds.

  • 1
    Ah, I'll just go about writing some script for it then. Thanks! – Ken Oh Nov 3 '12 at 5:59
5

tail monitors a single file, or at most a set of files that is determined when it starts up. In the command tail -F file_name*.log, first the shell expands the wildcard pattern, then tail is called on whatever file(s) exist at the time.

To monitor a set of files based on wildcards, you can use multitail.

multitail -iw 'file_name*.log' 1
1

You're probably going to have to write something to follow tail. Or configure your system to not roll logs (or that log) at midnight. Either way, the filehandle of the tailed logfile is reset when it's rolled.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.