NodeJs 重启程序时,如何保证PID不变?

NodeJs 重启程序时,如何保证PID不变? 重启程序,每次都生成不同的pid,如何做到pm2那样restart后pid依旧保持不变?

最佳答案

特地去用 pm2 试了一下,发现并没有你说的这个功能。重启之后 pid 都会发生变化

最开始我也怀疑 stopstartrestart 这三个指令可能不会杀掉系统里的进程,但是实际上并不是这样。

我做了以下操作:

  • 检查当前进程 pid=20259
  • 执行 pm2 stop 0
  • 查看 ~/.pm2/pids 目录下对应的 .pid 发现已经被删除了
  • 打开系统进程监视器查看 20259 进程已经被回收了
  • 执行 pm2 start 0
  • 再次查看 ~/.pm2/pids 目录,发现 pid 文件已创建,pid=20364
  • 查看进程监视器 20364 进程创建。

因此得出: pid 会改变,进程会被回收

思考补充:

pid 代表的是系统的进程,进程被回收则 pid 会被销毁。pid 不改变意味着进程一直占用系统资源,但是 stopped 状态的程序是不用保留系统进程的,需要销毁。
至于有没有机制可以对 restart 的进程进行 pid 保留,我不知道。