NodeJs应用程序在异步文件复制时abrubtly停止

时间:2017-05-12 19:02:12

标签: node.js asynchronous rhel file-copying fs-extra

我正在尝试在Node.js中编写文件复制代码:

function archiveFolder(site, callback) {
//console.log("Processing Site2 " + site );
var path = srcDir + '/' + site;
var startDate = moment(new Date(), 'YYYYMMDD');
asyncCounter++;
console.log("getting list of files for site " + site);
fse.readdir(path, function(err, files) {
    console.log("got list of files for site " + site);
    if (err) {
        console.log(err);
        return callback(err);
    }
    async.eachLimit(files, 5, function(file, callback2) {

        var endDate = moment(file, 'YYYYMMDD');
        var diff = startDate.diff(endDate, 'days');
        fs.stat(path + '/' + file, function(err, stats) {
            try {
                if (err) {
                    return callback2(err);
                }
                if (/^\d{8}$/i.test(file) && stats.isDirectory() && diff >= 7) {
                    fse.ensureDir(destDir + '/' + site, function(err) {
                        fse.copy(path + '/' + file, destDir + '/' + site + '/' + file, function(err) {
                            try {
                                if (err) {
                                    //console.log(err);
                                    return callback2(err);
                                } else {
                                    console.log("copied " + site + '/' + file);
                                    return callback2();
                                }
                            } catch (e) {
                                console.log(e);
                                return callback2(err);
                            }
                        });
                    });

                } else {
                    // //console.log("failed " + path + '/' + file)
                    return callback2();
                }
            } catch (e) {

                console.log(e);
                return callback2(err);
            }

        });


    }, function(err) {
        if (!err) {
            //console.timeEnd("site");
            console.log("finished Site " + site + " asyncCounter " + asyncCounter);
            return callback();

        } else {
            return callback(err + "  test");
        }
    });
});

}

在控制台或系统日志上仍然没有任何错误消息/var/log/messages

这种行为可能是什么原因?我可以增加服务器上的ulimit,但我想确认这是由于这个"文件数量打开"限制。

0 个答案:

没有答案