多年来,我一直使用 CentOS 5 和 6 作为 Web 开发服务器。我直接在安装在 Windows 7(以前是 Windows XP)上的 Samba 共享上编辑文件。我正在尝试迁移到装有 Samba 4.8 的 CentOS 7。当我在 Samba 共享上编辑文件时,出现了一个奇怪的问题。我编辑文件,保存它,然后收到一条消息“该文件在该应用程序之外被修改”。这种情况经常发生。
我尝试了“dos filetimeresolution = yes”。这没用,但我猜这只适用于非常老旧的软件,因为 windows 7 显示的时间很奇怪。
于是我运行watch -n 1 stat file.txt
并保存了它。修改时间戳更改为:2019-08-10 22:48:19,但几秒钟后它又更改为:019-08-10 22:48:33
所以我猜这就是问题所在。Samba某些东西回来了,并对文件做了一些事情,改变了修改时间。我不知道是什么原因,但它确实扰乱了编辑器,使编辑变得难以使用。当服务器是 samba 4 时,我也在 linux 下的 cifs 安装上看到了这种情况。
这也发生在运行 Samba 4.4 的 QNAP NAS 上。
有任何想法吗?
更新:
inotifywait -m /home
...... on save:
/home/ OPEN output.txt
/home/ ATTRIB output.txt
/home/ MODIFY output.txt
/home/ CLOSE_NOWRITE,CLOSE,ISDIR
/home/ ATTRIB output.txt
...... about 10-15 seconds after the save:
/home/ CLOSE_NOWRITE,CLOSE output.txt
/home/ CLOSE_WRITE,CLOSE output.txt
/home/ ATTRIB output.txt
答案1
我发现如果选项oplocks = yes
Samba 会出现上述行为。因此,在任何正常的 Linux 发行版中,您都可以设置oplocks = no
。但是,我不确定如何解决 QNAP 每次更改 Samba 配置时(也许在重新启动时?)覆盖配置文件的问题。所以我不会接受这个作为答案,但它可能会帮助其他在正常 Linux 发行版中遇到同样问题的人。