我正在做一个使用PM2进行生产的nodeJs项目。我命令启动一个PM2进程来启动我的nodeJs服务器。
我现在面临着一个奇怪的行为:当我通过pm2 stop all停止PM2进程时,我注意到我的web应用程序仍在运行。
在检查我的端口之后,通过
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)正如您所看到的,我发现3个进程正在运行相同的PID,当我使用以下命令终止它时
kill -9 PROCESS_ID然后再检查一遍我发现它并没有被杀死。
这意味着当我通过PM2重新启动我的服务器时,它会得到一个错误,因为端口3000正在使用中。
有没有关于如何杀死它或者为什么我会有这种行为的建议?
发布于 2018-01-07 06:11:24
尝试切换到根目录,然后终止并重新启动pm2进程:
sudo -i -u root
pm2 kill
pm2 start [my server file]
如果您已将pm2设置为以根用户权限自动运行,则在没有根用户访问权限的情况下将无法终止或替换该进程。您还可以使用sudo命令终止进程,而不是切换到root。
发布于 2018-08-01 18:27:13
使用ps aux | grep God列出进程并终止所有进程ID
发布于 2020-11-07 20:48:20
您可能正在运行多个pm2进程。
请与ps ax | grep pm2核对,用kill <PID>手动将其全部删除,然后尝试重新开始。
https://stackoverflow.com/questions/47459788
复制相似问题