我正在使用nodejs中的wget()监视IP列表,使用“node”。
确切的命令是
wget( {
url: szTargetIP, // as "http://10.139.238.167
dest: '/tmp/wget/',
timeout: 2000
},在扫描文件(as /tmp/wget/10.139.238.167)之后,我就这样做了。
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“显示
/tmp/wget/10.139.238.167 (deleted)有什么想法吗?
*完整代码*
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) => {发布于 2019-01-23 14:31:17
node-wget使用fs.createWriteStream()函数,根据API文档,在error或finish事件上自动关闭目标文件。
node-wget还使用了request模块,它不会发出finish事件,但会发出complete。
,那么wget命令的目标文件永远不会关闭.。
只需添加如下内容:
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
}); // closehttps://stackoverflow.com/questions/54328388
复制相似问题