我正在开发一个 ubuntu 16.04 盒子:
ruby 2.3.1p112
filesystem : XFS
我编写了一个 ruby 脚本,它将小而独特的文本文件写入一组文件夹,每次写入将在大约 5 秒内发生,并且每次写入的文件夹都是随机的。
但有时会发生此错误:
"Permission denied @ rb_sysopen"
奇怪的是它可能发生在同一个文件夹上,该文件夹在一分钟左右之前可以正常写入而不会出错。所以这与文件权限无关。我还通过“xfs_repair”卸载了相关磁盘以进行磁盘检查,没有发现任何异常,并且在我重新安装它之后,同样的错误会以不规则的方式出现。
请问有什么提示吗?
最佳答案
无法推测根本原因,但如果您绝对确定这是一个暂时性问题并且您只需要使其正常工作,您可以尝试 Ruby 的 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
您可能还需要抛出
sleep
在这种情况下,这是时间敏感的。你需要进行实验。请注意不要将这段代码变成阻塞代码。显然,这种蛮力远非理想,但有时你必须做你必须做的事情。
关于ruby - ruby 脚本偶尔出现 "Permission denied @ rb_sysopen",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479281/