20
tail -f x.log

I use this command to see a growing log file in the command prompt.

I am interested only in seeing the log lines that are written to the file after running tail -f and not interested in the logs that were written to the file before doing tail -f. But tail -f command on start, takes the last 10 lines and displays it.

This confuses me, at times if these logs are freshly generated (or) they are old logs?

So, how can i customize tail -f to output only the new entries?

31

You can try:

tail -n0 -f x.log

From man page:

-n, --lines=K
output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth

12

You can use the -n0 option to show 0 lines. So

tail -n0 -f some.log
2

You can also use less command like

  1. less file_name.log (log file will be opened and will show first page of the log file)
  2. press shift + f (to act same as like tail -f)
  3. In case if you need to search for any keyword in log file. press ctrl + c to exit the tail mode and search for the keyword as /keyword and ?keyword.
  • This does not view only the new entries in a growing log file. – Spooky Apr 8 '18 at 22:38
0

I've created this approach when I had to monitor entries inside docker container:

LOG_COUNT=0
LOGS=/var/logs/your_logs

function HEART_BEAT() {
    LOG_COUNT_NEW=$(wc -l $LOGS | awk '{ print $1 }')
    tail -n $(( $LOG_COUNT_NEW - $LOG_COUNT )) $LOGS
    LOG_COUNT=$LOG_COUNT_NEW
}

Hope this helps!

Your Answer

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