如果在保存文件后立即访问,则会出现文件未找到/读取错误

如果在保存文件后立即访问,则会出现文件未找到/读取错误

我正在运行 CentOS 7,正在同步安装的网络驱动器(NFS)上工作。

编辑:更多系统信息:服务器正在运行 CentOS Linux 版本 7.3.1611(核心),内核为 3.10.0-514.16.1.el7.x86_64 和 NFS v4

% nfsstat -m 
/misc/workarea from 192.168.6.3:/workarea/
Flags: rw,relatime,vers=4,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.106,minorversion=0,local_lock=none,addr=192.168.6.1

该问题可以概括如下:

假设文件系统“感觉很慢”,例如,它比平时需要更长的时间才能看到ls结果。如果我尝试写入文件,然后在写入后立即读取它(以人类的时间尺度计算),我将得到file not foundread/write error

以下是几个实际的例子:

  1. 我在一个终端选项卡中编写 Perl 代码,并在另一个终端选项卡中运行它。我经常保存我正在编辑的文件(module.pm例如),然后立即切换到另一个选项卡并运行我正在处理的脚本。如果文件系统“感觉很慢”并且我运气不好,我就会could not find module.pm出错。只有几秒钟后我重新运行,才会找到该文件。

  2. 我正在一个终端选项卡中处理 Tcl 脚本。该脚本由我启动的波形查看器应用程序使用。每当我想检查 Tcl 脚本是否按预期执行时,我都会保存它,切换到波形查看器并单击相应 Tcl 函数上的“重新加载”。如果我运气不好,我会得到file not found错误。

  3. 我有一个工具(Perl 脚本),它可以做几件事,最后将一些输出保存到文本文件中。在写入文本文件后,它会立即将编辑后的文件提交给修订控制系统。有时,我会从修订控制系统获取could not read file或修改。input/output error

该问题由于 3) 而特别令人恼火,因为它会导致工具崩溃。

  • 有谁见过类似的问题并且知道可能导致该问题的原因是什么?
  • 或者,有人知道我该如何开始调试这样的问题吗?在 3) 的情况下,我可以让脚本立即保存一些我可以查看的调试信息,我只需要知道要保存什么信息。

相关内容