Shell tail-F在更新的符号链接上

Shell tail-F在更新的符号链接上,shell,redhat,tail,Shell,Redhat,Tail,有人能帮我理解下面的行为吗 假设有2个目录,每个目录中有1个文件: aaa/file1 bbb/file2 然后有一个符号链接指向文件1,例如: current -> aaa/file1 从2个单独的会话中,我将一些数据推送到2个文件中。其中一个是随机数,另一个是常量文本: while true;do echo $RANDOM >> aaa/file1 ; sleep 8; done 及 然后,我在符号链接上运行tail-F,使用--disable inotify作为解决

有人能帮我理解下面的行为吗

假设有2个目录,每个目录中有1个文件:

aaa/file1
bbb/file2
然后有一个符号链接指向文件1,例如:

current -> aaa/file1
从2个单独的会话中,我将一些数据推送到2个文件中。其中一个是随机数,另一个是常量文本:

while true;do echo $RANDOM >> aaa/file1 ; sleep 8; done

然后,我在符号链接上运行
tail-F
,使用
--disable inotify
作为解决方法,我看到了预期的随机值:

tail -F ---disable-inotify current
53
27169
30599
...
然后,我从另一个会话更新符号链接,使其指向另一个文件:

ln -sf bbb/file2 current
正如预期的那样,
tail
输出切换到:

tail: ‘current’ has been replaced;  following end of new file
HELLO
HELLO
HELLO
...
但现在,在我再次切换回符号链接以指向第一个文件后:

ln -sf aaa/file1 current
尾部输出保持在HELLO状态,即仍在上一个文件bbb/file2之后:

HELLO
HELLO
HELLO
HELLO
有人知道为什么会这样吗?这仍然与前面提到的bug有关,还是我在这里遗漏了其他东西?
(我在RHEL 7.2//GNU coreutils 8.22上)

内存中说符号链接跟随了符号链接的名称。您可能还需要选项
-n
。为了进一步探索,我发现
ls-l
非常有用。在Mint 19上,coreutils 8.28,tail将“翻转”回aaa/file1Memory说符号链接跟随符号链接的名称。您可能还需要选项
-n
。为了进一步探索,我发现
ls-l
非常有用。在Mint 19,coreutils 8.28上,tail将“翻转”回aaa/file1
HELLO
HELLO
HELLO
HELLO