有一天,無所事事,我的應用程序決定不死。無法殺掉NodeJS應用程序
當我檢查端口時,按下ctrl + c後,它仍然存在,不僅在我的機器上,而且還在由PM2管理的服務器上,所以我需要每次都去那裏並手工關閉進程。我試圖在我的代碼中查找問題,當我不能確定它只是其中一個依賴關係錯誤時,很快就會出現問題。雖然有點煩人,但我可以用kill -9 PID殺死進程,而且我在前端執行了大部分任務,所以這不是什麼大問題。今天,一個多星期後,問題仍然存在。 我回到了歷史中,選擇了一個我幾個星期前做的提交,其中一切工作都很完美,將NodeJS從5.1.0切換到4.2.1,清除了npm緩存,重新安裝了所有依賴項,但仍然看到問題。 我正在使用LoopbackJS,但通常我只是用「node server/server.js」啓動應用程序,然後發生上述問題,但如果我使用「slc run」,然後嘗試用ctrl + c殺死應用程序它只是永遠掛起,我的意思是我可以按ctrl + c多次按我的意願,它仍然在控制檯前臺運行。
如果不是按下ctrl + c我殺死控制檯中的選項卡,應用程序死亡沒有問題。
這是我跑「lsof的-i TCP:4000」後看到,當應用程序被認爲是死的,但不是
編輯: 運行並與Strongloop進程管理器殺它 - slc start/slc stop可以正常工作,但在開發過程中使用運行NodeJS應用程序(節點server.js)的常規方式會更方便,並且不會改變存在某個問題的事實,最好不要把它藏在地毯下面。
問題只發生在使用slc運行時? –
我編輯的問題。當我用「slc run」運行它時,它試圖殺死它,它只是在前臺掛起,我可以按照我喜歡的那樣按ctrl + c,但是當我使用node server/server.js運行它時,它保留在後臺 –
而且如果使用'slc clusterctl stop'關閉它,問題是否會發生?或更新版本的'slc ctl stop'?我的猜測是它殺死了集羣控制器,但讓子進程繼續運行。 –