NodeJs - 无法杀死进程

Pet*_*son 1 node.js pm2

我正在开发一个使用 PM2 进行生产的 nodeJs 项目。我设法启动了一个 PM2 进程来启动我的 nodeJs 服务器。

我现在面临一个奇怪的行为:当我通过停止 PM2 进程时,pm2 stop all我注意到我的网络应用程序仍在运行。

通过检查我的端口后

lsof -i:3000

我有 :

COMMAND    PID     USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
node\x20/ 8239 user1   11u  IPv6 183534091      0t0  TCP *:3002 (LISTEN)
node\x20/ 8239 user1   18u  IPv6 183535847      0t0  TCP server.isymfony.net:3002->server.isymfony.net:51032 (ESTABLISHED)
node\x20/ 8239 user1   20u  IPv6 183526338      0t0  TCP server.isymfony.net:3002->server.isymfony.net:51036 (ESTABLISHED)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我发现了 3 个运行相同 PID 的进程,当我使用

kill -9 PROCESS_ID
Run Code Online (Sandbox Code Playgroud)

然后重新检查我发现它没有被杀死。

这意味着当我通过 PM2 重新启动我的服务器时,它会出错,因为端口 3000 正在使用中。

关于如何杀死它或为什么我有这种行为的任何建议?

小智 6

尝试切换到 root,然后杀死并重新启动 pm2 进程:

sudo -i -u root

pm2 kill

pm2 start [my server file]

如果您已将 pm2 设置为使用 root 权限自动运行,则您将无法在没有 root 访问权限的情况下终止或替换该进程。您也可以使用 sudo 命令来终止进程,而不是切换到 root。