首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wget() to /tmp/wget生成"EMFILE,打开的文件太多“

wget() to /tmp/wget生成"EMFILE,打开的文件太多“
EN

Stack Overflow用户
提问于 2019-01-23 13:28:13
回答 1查看 238关注 0票数 0

我正在使用nodejs中的wget()监视IP列表,使用“node”。

确切的命令是

代码语言:javascript
复制
    wget( {
        url:  szTargetIP,     // as "http://10.139.238.167
        dest: '/tmp/wget/',
        timeout: 2000    
    },

在扫描文件(as /tmp/wget/10.139.238.167)之后,我就这样做了。

代码语言:javascript
复制
fs.unlink( szIPfn, (err) => {          // delete file
    if (err) {
        if ( err.code === 'ENOENT' ) {
            mConsole( '--- file '+ szIPfn +' does not exist' ) ;
        } else {
            throw err ; // fatal error : stop
        } ;
    } else {
        mConsole( '+++ successfully deleted ' + szIPfn ) ;
    } ;
} ) ; // unlink

我总是记录“+++成功删除/tmp/wget/10.139.238.167”

不幸的是,在运行了一段时间的app.js之后,我得到了"EMFILE,太多打开的文件“

目录"/tmp/wget“为空,但是..。"lsof \ grep wget“显示

代码语言:javascript
复制
/tmp/wget/10.139.238.167 (deleted)

有什么想法吗?

*完整代码*

代码语言:javascript
复制
wget( {
        url:  szTargetIP,  
        dest: '/tmp/wget/',
        timeout: 2000       
    },
    function (error, response, body) {
        szNow = genTimeStamp() ; // get timestamp
        if (error) {
            console.log('--- wget() error:');
        } else {
            console.log('+++ wget() ok');
        } ; // no error = wget() ok
    }
) ; // wget()

var szIPfn = '/tmp/wget/' + iWget_IP ; 
fs.unlink( szIPfn, (err) => {
EN

回答 1

Stack Overflow用户

发布于 2019-01-23 14:31:17

node-wget使用fs.createWriteStream()函数,根据API文档,在errorfinish事件上自动关闭目标文件。

node-wget还使用了request模块,它不会发出finish事件,但会发出complete

,那么wget命令的目标文件永远不会关闭.

只需添加如下内容:

代码语言:javascript
复制
var szIPfn = '/tmp/wget/' + iWget_IP ; 

fs.close(szIPfn, err => {
  if (err) thow err;

  fs.unlink( szIPfn, (err) => {         // delete file
    if (err) {
      if ( err.code === 'ENOENT' ) {
        mConsole( '--- file '+ szIPfn +' does not exist' ) ;
      } else {
        throw err; // fatal error : stop
      }
    }else{
      mConsole( '+++ successfully deleted ' + szIPfn ) ;
    }
  }); // unlink
}); // close
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54328388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档