sourcecode

어떻게 하면 지역 소방 기지 에뮬레이터를 종료할 수 있습니까?

copyscript 2023. 6. 18. 16:14
반응형

어떻게 하면 지역 소방 기지 에뮬레이터를 종료할 수 있습니까?

현재 저는 다음을 사용하여 화재 기반 에뮬레이터를 초기화합니다.

$ firebase emulators:start

시간이 좀 지난 후에 저는 그것을 중단하고 싶습니다.그러면 에뮬레이터를 어떻게 멈출 수 있습니까?

  1. 가 포트를 합니다.sudo lsof -i tcp:<port>
  2. 를 종료합니다.kill -9 <process id>

다음에 따르면: https://github.com/firebase/firebase-tools/issues/1367 . Ctrl+C.

중 하나는 실행하는 입니다.npx kill-port 4000,8080,8085

만약 당신이 모든 파이어베이스 에뮬레이터를 죽이고 싶다면, 당신은 이 명령을 실행하면 쉽게 그것을 할 수 있습니다.

$ lsof -t -i:8080 -i:9000 -i:9099 -i:9199 -i:9090 | xargs kill -9

패키지에 스크립트를 사용하는 것이 좋을 때마다 이 긴 명령을 입력하지 않으려는 경우.json 파일

 "scripts": {
   "emulators:start": "firebase emulators:start",
   "emulators:stop": "lsof -t -i:5001 -i:5002 -i:8080 -i:9000 -i:9099 -i:9199 -i:9090 | xargs kill -9"
  }

하나는 에뮬레이터를 시작하기 위한 것이고 다른 하나는 Ctrl+C가 백그라운드에서 프로세스를 중지하지 않은 경우를 대비하여 중지하기 위한 것입니다.

이러한 포트는 Firebase의 설명서 페이지에 있는 기본 포트입니다.당신은 또한 당신의 화기 기지를 확인해야 합니다.json 파일을 저장하고 이전 명령의 포트가 다를 경우 해당 포트를 교체합니다.

매번 포트를 확인하지 않으려면 아래와 같이 명령을 중지할 수 있습니다.

kill -9 (lsof -t -i:5002 -i:5001)

(-i:xxxx는 firebase.json에서 실행 중인 에뮬레이터 포트입니다.)

게다가 나는 이 긴 명령어를 외우고 싶지 않습니다.그래서 패키지를 만들었습니다.아래의 json 스크립트.

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

여기 제가 방금 발견한 재미가 있습니다.에뮬레이터를 종료하고 모든 포트와 프로세스를 지우려면 에뮬레이터를 실행하는 터미널에서 CTRL-C를 두 번 누르고 C를 두 번 누릅니다.

제가 몇 번 확인해봤는데 항구가 비어있는지 확인해보니 모두 비어있습니다.

CTRL-C를 한 번 사용하면 해당 포트가 모두 계속 사용됩니다.나뿐만 아니라 다른 사람들도 문제를 해결하길 바랍니다.

편집: 에뮬레이터를 설정한 후 컴퓨터를 처음 종료할 때까지만 문제가 지속되는 것 같습니다.이제 CTRL-C 하나로 에뮬레이터가 올바르게 종료되는 데 문제가 없습니다.

위의 모든 답변을 시도했지만 아무도 제가 예상했던 것을 하지 못했습니다. ctrl+c를 사용하지 않고 포트를 사용하지 않고 에뮬레이터 제품군을 전체적으로 우아하게 종료하는 것입니다.이것이 제가 해결한 방법입니다.

TLDR:lsof -ti :4400 | xargs --no-run-if-empty kill

포트는 4400이며 에뮬레이터 허브의 기본 포트입니다.이 명령을 사용하면 프로세스에 관계없이 에뮬레이터를 종료할 수 있습니다.

다른 답변에 사용된 "-9" 플래그는 SIGTERM 신호를 프로세스로 보내지 않고 대신 강제로 종료합니다.이렇게 하면 에뮬레이터가 정상적으로 종료되지 않습니다.

다른 방법은 다음과 같습니다.firebase emulators:execCLI 설명서에 따르면 다음과 같은 작업을 수행합니다.

로컬 Firebase 에뮬레이터를 시작하고 테스트 스크립트를 실행한 다음 에뮬레이터를 종료합니다.

테스트 실행 명령을 Makefile에 넣었기 때문에 다음 명령을 사용하여 Python에서 Firestore를 테스트합니다.firebase_adminSDK:

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

포트의 설정 및 해체는 소방서에서 직접 처리합니다.

프로젝트에서 노드를 사용하는 경우 전화를 걸 수 있습니다.

npx kill-port 3000 8080 9000 5001 5000 9199

당신은 이것을 당신의 스크립트에 넣을 수 있습니다.package.json쉽게 전화할 수 있는npm run kill.

"scripts": {
  "kill": "npx kill-port 3000 8080 9000 5001 5000 9199"
}

윈도우즈의 경우 먼저 cmd에 입력하여 포트 8080을 사용하는 프로세스의 PID를 찾습니다.

netstat -a -n -o | find "8080"

그런 다음 다음 다음 방법으로 프로세스를 종료합니다.

taskkill /PID <type PID here>

에뮬레이터를 중지할 수 있는 한 가지 방법이 있습니다.

pkill -f "firebase/emulators"

Firebase Emulators SDK 설명서(링크)에 따라 다음을 수행합니다.

에뮬레이터:start를 호출하면 에뮬레이터가 아직 설치되지 않은 경우 ~/.cache/firebase/에뮬레이터를 다운로드합니다.

따라서 이 솔루션은 다음과 같은 이유로 작동합니다.

  • 에뮬레이터 프로세스는 이 디렉토리에 있는 .jar 파일을 제공합니다.
  • 이 jar 경로가 프로세스 이름에 있으므로 pkill -f는 이름으로 찾을 수 있습니다.

이는 에뮬레이터가 실행 중인 포트를 가정하는 솔루션보다 강력하며, 특정 에뮬레이터의 인스턴스가 여러 개 실행 중인 경우에도 작동합니다.

언급URL : https://stackoverflow.com/questions/62684701/how-can-i-shut-down-the-local-firebase-emulators

반응형