Tshepang Lekhonkhobe wrote:
> even by default, it not longer waits for a second, but is more like 
> 'real-time'

I don't understand your comment in a bug report.  Being more
responsive seems like a good thing to me and good expected behavior.
Could you say a few words about why you are filing a bug report on
tail being more responsive?

See the /usr/share/doc/coreutils/News.gz file for a list of newsworthy
changes to tail.  In coreutils tail 7.5 tail aquired the ability to
use inotify.

  tail --follow now uses inotify when possible, to be more responsive
  to file changes and more efficient when monitoring many files.

Between versions 7.5 and 8.3 a period of instability resulted where
many bugs against tail's new behavior was reported.  (Newest on top.)

  tail -f (inotify-enabled) once again works with remote files.
  The use of inotify with remote files meant that any changes to those
  files that was not done from the local system would go unnoticed.
  [bug introduced in coreutils-7.5]

  tail -F (inotify-enabled) would abort when a tailed file is repeatedly
  renamed-aside and then recreated.
  [bug introduced in coreutils-7.5]

  tail -F (inotify-enabled) could fail to follow renamed files.
  E.g., given a "tail -F a b" process, running "mv a b" would
  make tail stop tracking additions to "b".
  [bug introduced in coreutils-7.5]

  tail without -f no longer access uninitialized memory
  [bug introduced in coreutils-7.6]

  tail -f (inotify-enabled) now avoids a race condition.
  Before, any data appended in the tiny interval between the initial
  read-to-EOF and the inotify watch initialization would be ignored
  initially (until more data was appended), or forever, if the file
  were first renamed or unlinked or never modified.
  [The race was introduced in coreutils-7.5]

  tail -F (inotify-enabled) now consistently tails a file that has been
  replaced via renaming.  That operation provokes either of two sequences
  of inotify events.  The less common sequence is now handled as well.
  [The bug came with the implementation change in coreutils-7.5]

  tail --follow --pid now avoids a race condition where data written
  just before the process dies might not have been output by tail.
  Also, tail no longer delays at all when the specified pid is not live.
  [The race was introduced in coreutils-7.5,
   and the unnecessary delay was present since textutils-1.22o]

  tail -f (inotify-enabled) now flushes any initial output before blocking.
  Before, this would print nothing and wait: stdbuf -o 4K tail -f /etc/passwd
  Note that this bug affects tail -f only when its standard output is buffered,
  which is relatively unusual.
  [bug introduced in coreutils-7.5]

  tail -f once again works with standard input.  inotify-enabled tail -f
  would fail when operating on a nameless stdin.  I.e., tail -f < /etc/passwd
  would say "tail: cannot watch `-': No such file or directory", yet the
  relatively baroque tail -f /dev/stdin < /etc/passwd would work. Now, the
  offending usage causes tail to revert to its conventional sleep-based
  (I.e., not inotify-based) implementation.
  [bug introduced in coreutils-7.5]

  tail -f now ignores "-" when stdin is a pipe or FIFO.
  tail-with-no-args now ignores -f unconditionally when stdin is a pipe or FIFO.
  Before, it would ignore -f only when no file argument was specified,
  and then only when POSIXLY_CORRECT was set.  Now, :|tail -f - terminates
  immediately.  Before, it would block indefinitely.

It seems to have settled down now and is back to functioning
acceptably for people again.

Bob



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to