pm2 (Process Manager for Nodejs)为何无法真正关闭已开启的进程呢?Nodejs

pm2 (Process Manager for Nodejs)为何无法真正关闭已开启的进程呢?Nodejs
pm2 start 开启一个 nodejs 项目后,通过 pm2 stop 或 pm2 kill 关闭进程,pm2 list 查看到的状态是已关闭。

但通过 lsof查看,对应的端口依然被占用着。

只能通过 kill [pid] 关闭进程。

还是说我理解上有偏差呢?

刚接触 pm2 不久,以上是遇到的一个疑惑。望赐教。

4 回复

pm2 delete


pm2 --help

pm2 stop 只是让 pm2 停掉你自己项目的进程,但是相关的 pm2 守护进程还在运行

针对您提出的关于PM2(Process Manager for Node.js)无法真正关闭已开启进程的问题,以下是一些可能的原因及解决方案:

可能原因

  1. 进程状态异常:有时进程可能处于“stopping”状态但并未真正关闭,这可能是由于某些内部错误或资源占用导致的。
  2. 端口占用:进程可能仍在占用某个端口,导致无法顺利关闭。

解决方案

  1. 使用PM2命令

    • 查看当前进程列表:pm2 ls
    • 尝试停止特定进程:pm2 stop <进程名或ID>
    • 如果停止无效,尝试删除进程:pm2 delete <进程名或ID>
  2. 强制关闭进程

    • 如果PM2命令无法关闭进程,可以尝试查找并强制关闭占用端口的进程。
    • 使用netstat -ano | findstr <端口号>(Windows)或lsof -i :<端口号>(Linux)查找占用端口的进程ID。
    • 使用taskkill -pid <进程号> -f(Windows)或kill -9 <进程号>(Linux)强制关闭进程。
  3. 查看日志

    • 使用pm2 logs查看日志,了解进程为何无法关闭的具体原因。

希望以上信息对您有所帮助。如果问题仍然存在,建议检查Node.js和PM2的日志,以获取更详细的错误信息。

回到顶部