定期检查和清理服务器中的文件

我有以下与socket.io后端。 每当我们在新的浏览器选项卡中通过localhost:3000打开一个连接时,将在服务器的文件夹tmp/中创build一个以套接字标识命名的文件。

 var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); server.listen(3000); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.sockets.on('connection', function(socket) { var fs = require('fs'); fs.writeFile("tmp/" + socket.id, "hello", function (err) { if (err) { return console.log(err) }; console.log('a file is saved!'); }); }); 

因为套接字可能会断开连接,以后不活动或闲置。 我想在服务器中设置一个简单的清理规则。 例如, 在每天4pm ,我想删除昨天4pm之前保存的所有文件。

那么有谁知道如何设置这个定期检查+删除每一天?

编辑1:在与@georoot的讨论之后,我意识到我需要发送一个通知消息到tmp文件刚被删除的连接。 而且我宁愿拥有网站nodejs代码中的所有networking代码(尽pipenodejs代码可能会调用外部bash)。

你考虑过node-cron吗? 编辑:结合fs.stats文档,您可以使用mtime(修改时间)来筛选每个文件。 和fs.readdir来获取文件。

这是比nodejs更多的bash相关问题。

识别要删除的文件

首先编写一个脚本来检查在当前时间前24 hours创build的文件。 获取文件的时间

 date -r $filename 

在循环内运行以查找需要删除的文件。 你可以简单地通过pipe道从这里输出。

删除文件

只需使用删除文件

 rm -rf $filename 

这是在最后一步中确定的。

添加到cron

做一个cron工作来每天调用这个脚本。