Javascript HTTP服务器在一段时间后停止(Node.js)

Javascript HTTP服务器在一段时间后停止(Node.js),javascript,node.js,express,debian,httpserver,Javascript,Node.js,Express,Debian,Httpserver,信息:我指的是我在超级用户上问的问题,但没有得到答案,我认为这是一个好地方,因为问题可能与代码有关 我目前正在RaspberryPi上运行一个简单的Node.JS服务器,其中包含express.JS,并安装了Debian。一切正常,但每天早上醒来发现我的服务器不再运行(我用命令node main.js启动的服务器进程) 我的第一个猜测是,Pi有某种睡眠模式,它会在几个小时后进入,没有流量/etc,并关闭服务器,但我也运行一个dydns客户端,它每天早上都在运行(我也被告知,RaspberryPi

信息:我指的是我在超级用户上问的问题,但没有得到答案,我认为这是一个好地方,因为问题可能与代码有关

我目前正在RaspberryPi上运行一个简单的Node.JS服务器,其中包含express.JS,并安装了Debian。一切正常,但每天早上醒来发现我的服务器不再运行(我用命令
node main.js启动的服务器进程)

我的第一个猜测是,Pi有某种睡眠模式,它会在几个小时后进入,没有流量/etc,并关闭服务器,但我也运行一个dydns客户端,它每天早上都在运行(我也被告知,RaspberryPi没有睡眠模式)

我编写了一个简单的脚本来检查进程是否正在运行,并将其写入日志文件,但今天早上我不得不注意到,该脚本没有运行(仅在大约两个小时内,它每15秒记录一次服务器状态,最后一个状态正在运行)

以下是脚本:

#!/bin/sh                                                                                                                                     

MATCH="SOME_PROCESS_NAME"                                                                                                

while [ true ]                                                                                                                                
 do                                                                                                                                            
   if [ "$(ps -ef | grep ${MATCH} | grep -v grep)" ]; then                                                                                     
     echo "$(date): Process is running ..."                                                                                                    
   else                                                                                                                                        
     echo "$(date): Process has ended ..."                                                                                                                                                                                                                    
   fi                                                                                                                                          

   sleep 15                                                                                                                                     
done 
有没有办法在我明天早上启动一个流程后跟踪它,以检查是什么扼杀了我的流程,或者为什么它结束了(脚本显然不起作用)

服务器本身看起来很简单,我不认为我错过了某种自动关机。这是我使用的代码

var express = require('express');
var path    = require('path');

var server  = express();
server.use(express.static(path.join(__dirname, 'public')));

server.listen(1337);
console.log("Server listening (PORT: " + 1337 + ") ...");
您知道如何保持服务器运行/找出停止的原因吗


更新:我通过at-stackexchange收到了一个有效答案

我猜是覆盆子派在午夜或类似的时候重新开始。若要修复此问题,请为服务器进程rc.local文件添加一个条目。您可以通过编辑
/etc/rc.local

将命令添加到rc.local文件中。我猜Raspberry Pi会在午夜或类似的时间重新启动。若要修复此问题,请为服务器进程rc.local文件添加一个条目。您可以通过编辑
/etc/rc.local

将命令添加到rc.local文件中,这会有帮助吗

我想建议一种不同的方法来监控您的流程,直到您能够获得更多信息,编辑、检查、然后启动(动态撰写)

这有帮助吗

我想建议一种不同的方法来监控您的流程,直到您能够获得更多信息,编辑、检查、然后启动(动态撰写)


为什么RPi会在午夜重新启动?@lastssecondstolive我不知道。这可能是为了省电,也可能只是为了同步系统,我不知道。也许可以创建一个脚本,每分钟将时间写入一个文件,然后它会在关闭时自动停止。为什么RPi会在午夜重新启动?@lastssecondstolive我不知道。这可能是为了省电,也可能只是为了同步系统,我不知道。也许创建一个脚本,每分钟将时间写入一个文件,然后它会在关闭时自动停止。您是如何开始这些过程的?听起来他们可能会被一场灾难杀死。@robertklep是的,我在上一次会议上得到了一个类似的答案,我现在正在测试:)你是如何开始这些过程的?听起来他们可能会被一辆卡车撞死。@robertklep是的,我在那里得到了一个类似的答案,我现在正在测试:)
var fs = require('fs')
var spawn = require('child_process');

var child = spawn(process.argv[0], 'your/bin.js', {stdio:['ignore', 'pipe', 'pipe']})

child.stdout.pipe(fs.createReadStream('stdout.log'))
child.stderr.pipe(fs.createReadStream('stderr.log'))
child.on('error', function (err) {
  fs.writeFile('error.log', JSON.stringify(err), function () { /* void */ })
})
child.on('close', function (code, signal) {
  fs.writeFile('exit.log', "code="+code+" signal="+signal, function () { /* void */ })
})