簡體   English   中英

HTTP Server在一段時間后停止(Node.js)

[英]HTTP Server stops after some time (Node.js)

信息: 我指的是我在超級用戶上提出的這個問題,但無法得到答案,我認為這是一個很好的問題,因為問題可能與代碼有關。

我目前正在我的RaspberryPi上運行一個帶有express.js的簡單Node.JS服務器,並在其上安裝了Debian。 一切正常,但每天早上我醒來看到我的服務器不再運行了(服務器進程我從命令node main.js )。

我的第一個猜測是,Pi有某種睡眠模式,它會在沒有流量/等等的情況下進入幾個小時,然后關閉服務器,但我也運行了一個dydns-client,它每天早上都在運行( 我也被告知,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 + ") ...");

知道怎么做,保持服務器運行/找出停止原因是什么?

更新:我在RaspberryPi -stackexchange上收到了一份工作答復。

我的猜測是Raspberry Pi在午夜重啟或類似的東西。 修復此問題可能會為您的服務器進程rc.local文件添加一個條目。 您可以通過編輯/etc/rc.local將命令添加到rc.local文件

這有助於https://raspberrypi.stackexchange.com/questions/8741/when-does-the-os-kill-an-application

我想建議一種不同的方法來監控你的過程,直到你可以獲得更多信息,編輯,然后檢查,然后開始(動態寫)

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 */ })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM