亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NodeJs 重啟程序時,如何保證PID不變?求大佬指點!

NodeJs 重啟程序時,如何保證PID不變?求大佬指點!

一只名叫tom的貓 2019-10-10 16:35:52
NodeJs重啟程序時,如何保證PID不變?重啟程序,每次都生成不同的pid,如何做到pm2那樣restart后pid依舊保持不變?
查看完整描述

2 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

只要發生進程的結束和(重新)啟動,pid就一定會重新分配(有可能正好是同一個,但一般不是)。pm2我沒用過,但如果你觀察到一個“進程”“重啟”后pid不變,那你觀察的那個進程可能并不是真正被重啟的進程,而是控制進程,或者說master進程沒有重啟,worker進程重啟了,而你看到的是master進程的pid;也有可能你看到的不是pid,而是管理程序分配的內部id。
如果真的要實現pid不變而重啟進程,我能想到的是調用exec,具體怎么調用估計就要寫nativeaddon了;想實現對被管理的進程透明的話可能得注入之后想辦法調用exec,例如通過插樁或信號處理函數。
                            
查看完整回答
反對 回復 2019-10-10
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

特地去用pm2試了一下,發現并沒有你說的這個功能。重啟之后pid都會發生變化
最開始我也懷疑stop、start、restart這三個指令可能不會殺掉系統里的進程,但是實際上并不是這樣。
我做了以下操作:
檢查當前進程pid=20259
執行pm2stop0
查看~/.pm2/pids目錄下對應的.pid發現已經被刪除了
打開系統進程監視器查看20259進程已經被回收了
執行pm2start0
再次查看~/.pm2/pids目錄,發現pid文件已創建,pid=20364
查看進程監視器20364進程創建。
因此得出:pid會改變,進程會被回收
思考補充:
pid代表的是系統的進程,進程被回收則pid會被銷毀。pid不改變意味著進程一直占用系統資源,但是stopped狀態的程序是不用保留系統進程的,需要銷毀。至于有沒有機制可以對restart的進程進行pid保留,我不知道。
                            
查看完整回答
反對 回復 2019-10-10
  • 2 回答
  • 0 關注
  • 497 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號