我正在开发一个使用 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。
归档时间: |
|
查看次数: |
5531 次 |
最近记录: |