如果我有Windows客户端以小于等于10秒的间隔读取Linux smb共享上的文件,则Windows客户端将显示该文件的错误信息(已缓存?)。
我已经在多个系统上重现了这一点。
复制示例步骤:
1)设置linux samba共享-在此示例中,使用Debian并安装samba。例:
sudo mkdir /test
sudo chmod 777 /test
smb.conf添加:
[test]
read only = no
locking = no
path = /test/
guest ok = yes
2)将此目录映射为Windows客户端中的驱动器(此测试将使用L :)
3)在samba服务器上创建带有一些文本的文件
nano /test/test.txt
ORIGINAL
4)在Windows机器上创建简单的批处理文件,以每5秒查看一次文件:
copy con test.bat
@echo off
cls
:1
type L:\test.txt
timeout 5
goto 1
5)运行批处理文件,它应该每5秒显示一次ORIGINAL。
6)在linux服务器上,更改文件内容
nano /test/test.txt
CHANGED
7)在Windows上查看正在运行的批处理文件,它仍然每5秒显示一次“原始”,而不是真实文件中的“已更改”。
8)终止批处理文件并等待〜15秒,或者将超时更改为> 10秒,它将正确更新。
希望我已经解释并概述了如何充分测试。
任何人都可以重现此行为和/或建议如何解决此问题吗?
。
。
。
笔记:
Linux客户端> Linux SMB主机显示正确的文件内容。
Windows客户端> Windows SMB主机显示正确的文件内容。
特别是Windows客户端> Linux SMB主机在<= 10秒的刷新间隔内未显示正确的文件内容。
我测试过的所有Windows版本(Win7,Win10,Server2016)都表现出相同的行为。
我还在samba共享'NT1,SMB2,SMB3'上测试了不同的协议,它们没有改变行为。
注意:我认为这很可能是Windows的问题,但是一周内我都没有在technet或超级用户上收到任何答复。这应该很容易测试,任何人都可以确认这种行为或以其他方式声明吗?