Bart Vanhaute wrote:
> When I use tail -F to follow a file that is a symlink to another file,
> and that second file gets replaced, tail no longer follows the new
> file. I am not sure if this scenario is actually supported, but the
> current behaviour is unexpected to me.
>
> Detailed scenario to reproduce:
>
> in one terminal:
> $ ln -s f a
> $ touch f
> $ tail -F a
>
> in another terminal:
> $ mv f f.0
> $ echo 'hello' > f
>
> The output in terminal one will show
> tail: `a' has become inaccessible: No such file or directory
> but it will not show the 'hello' message.
>
> I am using coreutils version 8.5 on debian sid (linux kernel version
> 3.0.0), but I noticed the same behaviour in coreutils version 8.9 on
> opensuse (linux kernel version 2.6.37).
Thank you for the report.
That is indeed a difference in behavior from
the way tail works without inotify support.
If you want the old behavior (though there is no guarantee this
option will be around forever -- it's deliberately not documented),
use tail's ---disable-inotify option. Note the three leading '-'s.
Another work-around is to use readlink to give tail
an absolute name for the file:
tail -F "$(readlink -e a)"
Regarding tail's behavior change, we'll have to investigate
if/how to address it.