On 03/02/15 22:04, Stephane Chazelas wrote: > Hello, > > On Linux, when inotify is used, > > tail -f file > > follows a file only until it's renamed. After it is renamed, the > inotify watch is removed, which means tail sits there doing > nothing and any further modifications to the file are ignored. > > To reproduce: > > echo 1 > file > tail -f file & > exec 3>> file > echo 2 >&3 > sleep 1 > mv file file2 > sleep 1 > echo 3 >&3 > sleep 1 > : > file2 > > "3" is not displayed. No message about the file being truncated > either. > > Work arounds: > > tail ---disable-inotify -f file > tail -f < file # effectively disables inotify > > or rename the file with a link() followed by an unlink() > ln file newfile && rm -f file > > Note that the IN_DELETED_SELF event is not reached in > follow-descriptor mode because tail has the file open preventing > it from being deleted even after it's unlinked from the last > directory. > > Patch attached (on the current git head).
Ouch. The patch makes sense on first glance, and all existing tests pass with it. I'll check some more and add a test. thanks! Pádraig.
