定期检查和清理服务器中的文件
我有以下与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工作来每天调用这个脚本。