2014-02-06 15 views
0

我有一个Linux的盒子安装到Windows共享/ mnt/somedire /指向一个Windows服务器。我有另一个Windows应用程序,它将xml文件写入Windows共享。 Linux盒子上的ESB应用程序然后使用装载上的xml文件。当通过Linux上的窗口查看损坏的XML文件安装

当xml文件生成并通过Windows(记事本或notepadd ++)查看时,他们很好。当通过linux,cat,vi等命令查看时,xml的最后5或6行都会丢失,但它们是同一个文件。

有没有人见过这个之前,你可以如何解决它?

回答

0

当你写一个文件操作系统不立即写入到磁盘 - 其写入到多级缓存:文件系统缓存,缓存块,设备高速缓存等

定期,缓存是“刷新” - 写入底层设备。例如,umount就是这样。

所以,当你的Windows应用程序写入一些XML文件 - 写入NTFS缓存。在Windows上读取此文件将通过相同的缓存完成,这就是为什么它在Windows上一致。但是你的Linux机器对高速缓存一无所知 - 它拥有自己的高速缓存。

要避免此问题,您应该在Windows上使用直接I/O编写代码。

+0

我添加了直接I/O标志到挂载,但没有解决它,所以我添加了缓存='无'选项,并解决了它。感谢您指点我正确的方向。 – user3279967

0

它似乎是你的桑巴坐骑的问题。您的数据在Linux上不会冲洗。

尝试卸载并重新安装您的samba共享。