Files/directories 在 node.js 重新启动之前不会删除
Files/directories not deleting until node.js restarts
我有一个很大的 node.js 项目,它大量处理 linux redhat 文件系统,并且由 PM2 管理。我正在使用 fs 和 rimraf 在 redhat AWS 临时驱动器上进行磁盘清理。
当 运行 完成所有磁盘清理操作后,文件将被删除,但 node.js 将文件保持打开状态,直到重新启动。使用 df
显示磁盘已满,但 du
显示磁盘干净,这是有道理的。
据我了解,使用fs
时,如果使用fs.open
,则需要调用fs.close
,但这些函数从未被使用过。我使用的 fs 操作是:
fs.writeFile
fs.readdirSync
fs.lstatSync
fs.existsSync
fs.mkdirSync
fs.chownSync
fs.unlink
fs.rmdirSync
fs.writeFile
fs.createReadStream
fs.createWriteStream
Rimraf 也在使用中,但查看他们的代码,我认为这不是问题所在。
根据文档,我相信所有这些功能都会自行关闭,但如果有人知道我没有看到的内容,我们将不胜感激。
我的另一个担心是 pm2
以某种方式保持文件打开,这可能吗?
fs.createWriteStream requires manual fs.close()
. fs.createReadStream也需要它,除非你设置了autoClose
选项,然后一路读取文件直到结束或错误。
我有一个很大的 node.js 项目,它大量处理 linux redhat 文件系统,并且由 PM2 管理。我正在使用 fs 和 rimraf 在 redhat AWS 临时驱动器上进行磁盘清理。
当 运行 完成所有磁盘清理操作后,文件将被删除,但 node.js 将文件保持打开状态,直到重新启动。使用 df
显示磁盘已满,但 du
显示磁盘干净,这是有道理的。
据我了解,使用fs
时,如果使用fs.open
,则需要调用fs.close
,但这些函数从未被使用过。我使用的 fs 操作是:
fs.writeFile
fs.readdirSync
fs.lstatSync
fs.existsSync
fs.mkdirSync
fs.chownSync
fs.unlink
fs.rmdirSync
fs.writeFile
fs.createReadStream
fs.createWriteStream
Rimraf 也在使用中,但查看他们的代码,我认为这不是问题所在。
根据文档,我相信所有这些功能都会自行关闭,但如果有人知道我没有看到的内容,我们将不胜感激。
我的另一个担心是 pm2
以某种方式保持文件打开,这可能吗?
fs.createWriteStream requires manual fs.close()
. fs.createReadStream也需要它,除非你设置了autoClose
选项,然后一路读取文件直到结束或错误。