Displaying a "scrolling" log file
Via command line, I have a log file I'd like to keep track of.
What I want is to have, basically, a tail
that refreshes when the log is updated making the text scroll upwards as new lines are appended to the log file.
Is there anything out there that does that without having to write some code?
tail
has the -f
option:
From the man
page:
-f, --follow[={name|descriptor}] output appended data as the file grows; -f, --follow, and --follow=descriptor are equivalent
Thus if you type:
tail -f [path_and_name_of_logfile]
- you will see the output in the terminal as the log file itself is appended to.
N.B. [path_and_name_of_logfile]
is the parameter, so to give an example:
tail -f /var/log/messages
If you combine with the -n [number_of_lines]
option you can start the output from the last [number_of_lines] in the file - for example
tail -n 10 -f /var/log/Xorg.0.log
Some programs will periodically change their log file, moving the old one to a new name (e.g. log.0) and starting over.
N.B. logrotate does this to log files for other programs that don't do it themselves.
tail -f
will continue to follow the old file after it's renamed.
tail -F
will follow the file by name, so will switch to follow the new file.
While tail
is certainly the usual way to do this, it should be noted that less
has the same feature and is sometimes more usefull.
If you opened a file with less
then you can press Shift + F to have it follow the file (i.e. it will display new lines, just as tail -f
does). You can exit this mode with Ctrl + C
You can also start less
with the +F
option, in which case it will start in that mode. Generally speaking +
can be used to give "keyboard-commands" to less
which it will execute upon startup.
Using less
for this has the advantage that you can easily search the file or view other areas if the need arises. I've frequently done that with log files, for example.