我正在使用ubuntu 16.04盒子工作:
ruby 2.3.1p112
filesystem:XFS
我写了一个ruby脚本,写小&唯一的文本文件到一组文件夹,每次写入大约5秒钟,每次写入的文件夹都是随机的。
但有时会发生此错误:
"Permission denied @ rb_sysopen"
奇怪的是它可能发生在同一个文件夹中,只需一分钟左右即可正常写入而不会出错。所以这与文件权限无关。
我还通过" xfs_repair"卸载磁盘检查的相关磁盘,没有发现任何异常,并且在重新安装后,同样的错误会以不规则的方式出现。
请提供任何提示?
答案 0 :(得分:0)
无法推测根本原因,但如果您绝对确定这是一个暂时性问题而您只需要使其正常工作您可以尝试使用Ruby { {1}}。
retry
我还会添加一个重试限制,以防万一这不是短暂的。
def write_file(file, content)
File.write(file, content)
rescue Errno::EACCES
retry
end
如果时间敏感,您可能还需要在其中抛出def write_file(file, content)
retries ||= 3
return if (retries -= 1) == 0
File.write(file, content)
rescue Errno::EACCES
retry
end
。你需要做实验。请注意不要将此部分变成阻止代码。
显然,这种蛮力远非理想,但有时你必须做你应该做的事。