如何关闭本地firebase模拟器?

如何关闭本地firebase模拟器?,firebase,google-cloud-firestore,firebase-tools,Firebase,Google Cloud Firestore,Firebase Tools,目前,我使用以下方法初始化firebase模拟器: $firebase模拟器:开始 经过一段时间的工作,我想停止它。然后我如何停止模拟器 检查哪个进程正在占用端口sudo lsof-i tcp: 终止进程Kill-9 如果您不想每次都检查端口,可以使用以下命令停止命令 kill -9 (lsof -t -i:5002 -i:5001) (-i:xxxx是firebase.json中正在运行的模拟器端口。) 而且,我不想记住这个长命令。 所以我在下面编写了package.json脚本 "

目前,我使用以下方法初始化firebase模拟器:

$firebase模拟器:开始

经过一段时间的工作,我想停止它。然后我如何停止模拟器

  • 检查哪个进程正在占用端口
    sudo lsof-i tcp:
  • 终止进程
    Kill-9

  • 如果您不想每次都检查端口,可以使用以下命令停止命令

    kill -9 (lsof -t -i:5002 -i:5001)
    
    (-i:xxxx是firebase.json中正在运行的模拟器端口。)

    而且,我不想记住这个长命令。 所以我在下面编写了package.json脚本

    "scripts": {
       ...
       "stop": "lsof -t -i :5001 -i:5002 | xargs kill -9",
       ...
    }
    

    我已经尝试了上面的所有答案,但没有一个达到我的预期:在不必ctrl+c的情况下优雅地结束整个模拟器套件,不占用任何端口。下面是我如何解决它的

    TLDR:
    lsof-ti:4400 | xargs——空终止时不运行

    端口为4400,因为它是Emulator集线器的默认端口。尽管使用此命令,无论终止哪个进程,都将结束仿真器


    其他答案中使用的“-9”标志不会向进程发送SIGTERM信号,而是强制将其终止。这会阻止仿真器优雅地结束。

    根据这一点:
    Ctrl+C
    杀死仿真器

    另一种方法是使用
    firebase仿真器:exec
    ,根据CLI文档,它会执行以下操作:

    启动本地Firebase模拟器,运行测试脚本,然后关闭模拟器

    由于我将测试运行命令放在Makefile中,因此我使用以下命令从Python
    firebase\u admin
    SDK测试firestore:

    firebase emulators:exec "make test" --only firestore
    

    端口的设置和拆除由firebase直接处理。

    我发现,如果您退出VSCode而不首先关闭模拟器,它可以保持运行,并且没有上述命令,您将需要重新启动计算机才能重新启动模拟器。感谢您在linux上共享@xmkevinchenforWindows:@ra9r该过程称为java。如果你杀了它,你就不需要重新启动你的计算机。我很震惊,没有关机命令……这是一个疯狂的工作流。这对Windows不起作用。但对我来说是这样的——如果在macOS上空了就不运行是假的