PM2开始创build奇怪的文件

我创build了一个简单的“bot”来parsing一些trello卡的rss-feed。

我使用pm2来启动和维护bot.js

由于一些奇怪的原因cliframework创build了一些奇怪的文件。

为了使情况尽可能清楚:

pm2 list 

回报

 ┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │ ├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ bot │ 0 │ fork │ 25084 │ online │ 0 │ 3m │ 0% │ 67.7 MB │ disabled │ └──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘ 

有时如果我使用的

 ls 

该命令正在返回

 bot.js node_modules 

有时候会返回1个额外的空文件

 b0d3e000-bca5-11e6-b57b-fff3b35ba082 b0d3e001-bca5-11e6-b57b-fff3b35ba082 bot.js node_modules 

之后的文件被删除了一些secons,并在几秒钟之后用不同的名字创build

这里是主要的问题:

这个机器人运行了3个星期,而我是缺席和重新启动计数器有一个3127(为什么这么多… IDK),但每重新启动有一个这样的文件离开..我不得不删除3127文件..只是因为pm2正在创build一些奇怪的文件..

还有没有列出其他类似的问题..或者你知道一个可能的解决scheme吗?

编辑:我只是意识到,这些文件不是从重新创build..因为他们现在没有重新启动计数器> 0

只是为了确保代码分解:

 var feed = require('feed-read'); var http = require('http'); var async = require('async'); var request = require('request'); var utf8 = require('utf8'); var sprintf = require('sprintf-js').sprintf; var UNABLE_TO_CONNECT = "Unable to connect."; var CURFEED = ""; var PUBDATE = new Array(); var FEEDS = new Array(); FEEDS["TEST"] = "http://lorem-rss.herokuapp.com/feed?unit=second&interval=4"; //test var LISTID = new Array(); LISTID["TEST"] = "TRELLO_COLUMN"; var Trello = require("node-trello"); var t = new Trello("", ""); (function() { var timeout = setInterval(function() { async.parallel([ function(callback) { CURFEED = "TEST"; feedMe(CURFEED); // TODO: where to call callback()? } ], function done(err, results) { console.log("Done"); if (err) { throw err; } }); }, 1000); })(); function feedMe(feedName){ if(FEEDS[feedName] == "" || FEEDS[feedName] == undefined){ return; } feed(FEEDS[feedName], "ISO-8859-16", function(err, articles) { // console.log("------------------------- " + FEEDS[feedName]); if (err) { // html.push("<p>", UNABLE_TO_CONNECT = "</p>"); console.log(UNABLE_TO_CONNECT); } else { var updated = false; var newArticle = new Array(); articles.forEach(function(entry) { var merkDate = new Date(entry.published); var oldDate = new Date(PUBDATE[feedName]); if(PUBDATE[feedName] == "" || PUBDATE[feedName] == undefined){ PUBDATE[feedName] = merkDate; } if(oldDate.getTime() < merkDate.getTime()){ updated = true; newArticle.push(entry); } }); if(newArticle.length > 0){ for (var i = newArticle.length - 1; i >= 0; i--) { var entry = newArticle[i]; console.log(sprintf("----------------------------------------------------------")); console.log(sprintf("> %1$s %2$s: %3$s", "New-RSS-Entry", "detected", "Checking")); console.log(sprintf("---%1$s %2$s: %3$s", "Entry-Name", "", entry.title)); console.log(sprintf("----%1$s %2$s: %3$s", "Link-Name", "", entry.link)); console.log(sprintf("--%1$s %2$s: %3$s", "Create-Date", "", entry.published)); console.log(sprintf("-------%1$s %2$s: %3$s", "Status", "", "Creating-Trello-Card")); t.post("/1/lists/"+LISTID[feedName]+"/cards", {name: entry.title, desc: entry.link} , function(err, data){ t.put("/1/cards/"+data.id+"/pos", {value: 0}, function(err, data){ }); }); console.log(sprintf("-------%1$s %2$s: %3$s", "Status", "", "Trello-Card fully created")); console.log(sprintf("> %1$s %2$s: %3$s", "New-RSS-Entry", "detected", "Closing")); } } if(updated == true){ PUBDATE[feedName] = new Date(); } } }); } 

好吧,我调查了这些文件,现在得到了解决scheme。 只是不要使用require('feed-read')了。

这似乎是创build文件来编码并在之后进行stream式处理。

主要问题如下:

  • Rss提要有一个错误的语法
  • 服务器不可用
  • 服务器返回一个数据库错误什么的

如果发生上述情况之一,文件将不会被删除。 有些人是空的。 但我发现一个vBulletinRss饲料,返回“数据库错误”。

要把这个请求放在一起,只需要使用一个请求并自己parsing。