定期检查和清理服务器中的文件
A regular checking and cleaning of files in the server
我有以下 socket.io
后端。每次我们在新的浏览器选项卡中通过 localhost:3000
打开连接时,都会在服务器的文件夹 tmp/
中创建一个以套接字 ID 命名的文件。
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 文件刚刚被删除的连接发送一条通知消息。而且我更愿意将所有 network 代码包含在网站 nodejs 代码中(尽管 nodejs 代码可能会调用外部 bash)。
这是比 nodejs 更多的 bash 相关问题。
识别要删除的文件
首先让我们编写一个脚本来检查在当前时间 24 hours
之前创建的文件。获取文件时间
date -r $filename
运行 内部循环查找需要删除的文件。您可以在这里简单地通过管道从 ls
输出。
删除文件
只需使用
删除文件
rm -rf $filename
已在上一步中识别。
添加到 cron
制作一个 cron 作业以每天调用此脚本。
您是否考虑过node-cron? EDIT: In combination with the fs.stats documentation you can use the mtime (modified time) to filter each file. And fs.readdir获取文件。
我有以下 socket.io
后端。每次我们在新的浏览器选项卡中通过 localhost:3000
打开连接时,都会在服务器的文件夹 tmp/
中创建一个以套接字 ID 命名的文件。
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 文件刚刚被删除的连接发送一条通知消息。而且我更愿意将所有 network 代码包含在网站 nodejs 代码中(尽管 nodejs 代码可能会调用外部 bash)。
这是比 nodejs 更多的 bash 相关问题。
识别要删除的文件
首先让我们编写一个脚本来检查在当前时间 24 hours
之前创建的文件。获取文件时间
date -r $filename
运行 内部循环查找需要删除的文件。您可以在这里简单地通过管道从 ls
输出。
删除文件
只需使用
删除文件rm -rf $filename
已在上一步中识别。
添加到 cron
制作一个 cron 作业以每天调用此脚本。
您是否考虑过node-cron? EDIT: In combination with the fs.stats documentation you can use the mtime (modified time) to filter each file. And fs.readdir获取文件。