programing

Node.js에서 종료하는 방법

telecom 2023. 6. 4. 10:16
반응형

Node.js에서 종료하는 방법

종료할 때 사용하는 명령어는 무엇입니까?(즉, Node.js 프로세스 종료)

글로벌 개체의 메서드를 호출합니다.

process.exit()

문서에서:

process.exit([exitcode])

된 지한값으프종료를다로 합니다.code경우 ' '성공' 코드로 종료합니다.0.

'실패' 코드를 사용하여 종료하는 방법

process.exit(1);

를 노를실행셸종은코료다드음합같니다보아로 보아야 .1.

참고로 사용할 수 있습니다.process.exit([number])권장되지 않는 방법입니다.

하기 르기process.exit() to I/O 을포업여아완완않작지있전업경는이프다우최에니스종합를빨세료로대리한도직을 포함하여 가 최대한 빨리 종료되도록 합니다.process.stdout그리고.process.stderr.

대부분의 상황에서 실제로 전화할 필요는 없습니다.process.exit()루프에 중인 Node됩니다.이벤트 루프에 보류 중인 추가 작업이 없으면 Node.js 프로세스가 자동으로 종료됩니다.process.exitCode프로세스가 정상적으로 종료될 때 사용할 종료 코드를 프로세스에 알려주도록 속성을 설정할 수 있습니다.

예를 들어, 다음의 예는 다음과 같은 오용을 보여줍니다.process.exit()를 를인수방법있는할로 할 수 stdout잘려서 손실됨:

// This is an example of what *not* to do:
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exit(1);
}

가 되는 는 이이문되이다쓰때다니문입에 쓰기 입니다.process.stdoutNode.js는 때때로 비동기적이며 Node.js 이벤트 루프의 여러 눈금에서 발생할 수 있습니다.하기 르기process.exit()이러한 합니다.stdout수행할 수 있습니다.

전화하는 것보다process.exit()직접적으로, 코드는 다음을 설정해야 합니다.process.exitCode이벤트 루프에 대한 추가 작업을 예약하지 않음으로써 프로세스가 자연스럽게 종료되도록 합니다.

// How to properly set the exit code while letting
// the process exit gracefully.
if (someConditionNotMet()) {
  printUsageToStdout();  
  process.exitCode = 1;
}

nodejs.org 공식 문서에서:

process.exit(code)

지정한 코드로 프로세스를 종료합니다.생략할 경우 exit은 '성공' 코드 0을 사용합니다.

'실패' 코드를 사용하여 종료하는 방법

process.exit(1);

Unix 터미널 또는 Windows 명령줄에서 Node REPL을 종료하려면 다음 중 하나를 수행합니다.

  • +를 두 번 누릅니다.
  • 형자.exit키를 누르거나 키를 누릅니다.
  • 줄의 시작 부분에서 +를 누릅니다(유닉스만 해당).

명행에서령..exit원하는 것은 무엇입니까?

$ node
> .exit
$

REP 문서에 문서화되어 있습니다.REP(Read-Eval-Print-Loop)는 노드 명령줄이라고 합니다.

일반 프로그램에서 를 사용합니다.

프로세스를 에도 node.js 파일을 종료할 수 있습니다.process.exit()고려할 수 있는 마지막 옵션입니다.설명서의 인용문:

은 주할점전거것이는를을 호출하는 것입니다.process.exit() to I/O 을포업여아완완않작지있전업경는이프다우최에니스종합를빨세료로대리한도직을 포함하여 가 최대한 빨리 종료되도록 합니다.process.stdout그리고.process.stderr.

대부분의 상황에서 실제로 전화할 필요는 없습니다.process.exit()루프에 중인 추가 Node됩니다.이벤트 루프에 보류 중인 추가 작업이 없으면 Node.js 프로세스가 자동으로 종료됩니다.process.exitCode프로세스가 정상적으로 종료될 때 사용할 종료 코드를 프로세스에 알려주도록 속성을 설정할 수 있습니다.

와 node.js를 피해야 살펴보겠습니다.process.exit():

사례 1 - 실행 완료(명령줄 스크립트)

스크립트가 끝에 도달했지만 노드 인터프리터가 종료되지 않으면 일부 비동기 작업이 아직 보류 중임을 나타냅니다.프로세스를 강제로 종료하는 것은 잘못된 것입니다.process.exit()현시점에서스크립트가 예상대로 종료되지 않는 원인을 파악하는 것이 좋습니다.그리고 이 문제를 해결하면, 당신은process.exitCode호출 프로세스에 결과를 반환합니다.

사례 2 - 외부 신호로 인한 종료(SIGINT/SIGTERM/기타)

예를 들어, 고속 앱을 정상적으로 종료할 의향이 있는 경우.명령줄 스크립트와 달리 익스프레스 앱은 계속 무한 실행되며 새로운 요청을 기다립니다. process.exit()파이프라인에 있는 모든 요청을 중단하기 때문에 여기서는 좋지 않은 옵션이 될 것입니다.일부는 동일하지 않을 수 있습니다(UPDATE, DELETE).클라이언트는 이러한 요청이 서버 측에서 완료되었는지 여부를 알 수 없으며 클라이언트와 서버 간의 데이터 불일치가 원인일 수 있습니다.에게 새로운 중인 입니다. http://field포탈.server.close():

var express = require('express');
var app = express();
var server = app.listen(80);

process.on( 'SIGTERM', function () {
   server.close(function () {
     console.log("Finished all requests");
   });
});

그래도 종료되지 않으면 사례 1을 참조하십시오.

사례 3 - 내부 오류

하는 것이 항상 좋습니다.throw오류가 발생하면 형식이 잘 지정된 스택 추적 및 오류 메시지가 표시됩니다.할 수 있는지 할 수 .catch또는 프로세스를 중단시킵니다.반면.process.exit(1)프로세스가 자동으로 종료되고 복구할 기회가 없습니다.이 것이유혜일 "택한니다"의일 수도 .process.exit()프로세스가 종료될 것임을 확신할 수 있습니다.

REP(명령줄)

  • 를 누릅니다.ctrl + c 두번이라.

  • .exit 키를 누른 다음 Enter 키를 .

스크립트 파일

process.exit(code)

노드는 일반적으로 더 이상 보류 중인 비동기 작업이 없을 때 코드 0으로 종료됩니다.

process.exit(1)오류 코드를 사용하여 종료해야 합니다.이를 통해 노드가 정상적으로 닫히지 않았고 강제로 닫혔다는 것을 추론할 수 있습니다.

다음과 같은 다른 종료 코드가 있습니다.

3 - 내부 JavaScript 구문 분석 오류(매우 드문 경우)

5 - v8 Javascript 엔진의 치명적인 오류

9 - 잘못된 인수

전체 목록은 노드 종료 코드 참조

다음과 같은 애플리케이션이 있습니다.

  1. 사용자에게 전자 메일 보내기
  2. 오류 코드와 함께 종료

했습니다.process.exit(code)완전히exit이벤트 처리기, 그렇지 않으면 호출 후 메일이 전송되지 않습니다.process.exit(code)비동기 이벤트를 직접 죽입니다.

#!/usr/bin/nodejs
var mailer = require('nodemailer');
var transport = mailer.createTransport();
mail = {
  to: 'Dave Bowman',
  from: 'HAL 9000',
  subject: 'Sorry Dave',
  html: 'Im sorry, Dave. Im afraid I cant do <B>THAT</B>.'
}
transport.sendMail(mail);
//process.exit(1);
process.on('exit', function() { process.exit(1); });

@Dominic이 지적했듯이 process.exit([code])호출하는 대신 발견되지 않은 오류를 던지는 이 더 나은 방법입니다.
process.exitCode = 1; throw new Error("my module xx condition failed");

를 누릅니다.Ctrl + C 번 또는 두인번가.exit.

> 
(To exit, press ^C again or type .exit)
> 

종료하기

let exitCode = 1;
process.exit(exitCode)

유용한 종료 코드

1 - 일반적인 오류에 대한 모든 것을 허용합니다.2 - 내장된 셸의 오용 (Bash 설명서에 따름)126 - 호출된 명령을 실행할 수 없음127 - "명령을 찾을 수 없음"128 - 종료할 인수가 잘못되었습니다.128+n - 치명적 오류 신호 "n"130 - 제어-C에 의해 종료된 스크립트255\* - 종료 상태가 범위를 벗어남

에서 사할수있코서에드는을 할 수 .process.exit([errorcode])[errorcode] 정수는定的 선定的 정定的 수定的 택定的 적定的 )0는 성공을 나타내는 기본값입니다.

REPL(Read Eval Print Loop)을 사용하는 경우 + 또는 를 사용할 수 있습니다..exit

또는 Windows 또는 Linux에서 +, +를 사용할 수 있습니다.

Mac에서 명령은 +, +입니다.

에서 Git Bash를 입력하여 노드 프로세스가 Windows 셸에서 되도록 할 수 .taskkill -F -IM node.exe이렇게 하면 컴퓨터의 모든 노드 프로세스가 한 번에 종료됩니다.저는 또한 사용할 수 있다는 것을 발견했습니다.taskkill //F //IM node.exe둘 다 왜 그런지 모르겠어요.-그리고.//이런 맥락에서 작용합니다.이것이 도움이 되길 바랍니다!

노드 응용 프로그램이 실행 중인 명령줄 터미널을 열고 Ctrl + C를 누릅니다.

코드에서 노드 js 응용 프로그램을 종료하려면,

process.exit(); // graceful termination 
process.exit(1); // non graceful termination 

프로세스는 글로벌 개체이므로 모듈을 가져올 필요가 없습니다.다음 함수는 현재 노드 프로세스를 종료하거나 종료합니다.

process.codes(코드)

process.kill(process.pid)

process.process.filename

노드 js의 종료는 두 가지 방법으로 수행됩니다.

  • process.exit()를 명시적으로 호출합니다.
  • 또는 모든 작업에 대해 nodejs 이벤트 루프가 수행되고 남은 작업이 없는 경우.그러면 노드 응용 프로그램이 자동으로 종료됩니다.

어떻게 작동합니까?

실행 루프를 강제로 실행하여 프로세스를 중지하려는 경우 EventEmiter의 인스턴스인 전역 변수 프로세스를 사용할 수 있습니다.따라서 process.exit()를 호출하면 비동기 작업이 아직 수행되지 않은 경우에도 모든 작업을 즉시 종료하는 종료 이벤트를 실제로 내보냅니다.

process.exit()는 종료 코드(Integer)를 매개 변수로 사용합니다.코드 0이 기본값이며 이는 '성공'으로 종료됨을 의미합니다.코드 1은 '실패'와 함께 종료됨을 의미합니다.

import mongosse from 'mongoose'
import dotenv from 'dotenv'
import colors from 'colors'
import users from './data/users.js'
import products from './data/products.js'
import User from './models/userModel.js'
import Product from './models/productModel.js'
import Order from './models/orderModel.js'
import connectDB from './config/db.js'

dotenv.config()

connectDB()

const importData = async()=>{
try{
    await Order.deleteMany()
    await Product.deleteMany()
    await User.deleteMany()

    const createdUsers = await User.insertMany(users)
    const adiminUser = createdUsers[0]._id

    sampleProducts = products.map(product =>{
        return {...product, user:adiminUser }
    })
    await Product.insertMany(sampleProducts)

    console.log('Data Imported!'.green.inverse)
    process.exit()      //success and exit

}catch(error){
    consolele.log(`${error}`.red.inverse)
    process.exit(1)   //error and exit

}

}

그래서 여기서 DB와 try block에 일부 컬렉션을 채우고 오류가 없으면 성공 메시지와 함께 종료합니다. 따라서 매개 변수에 아무것도 없는 process.dll을 사용합니다.오류가 발생하면 실패한 메시지와 함께 종료해야 하므로 매개 변수에서 process.exit(1)을 전달합니다.

extra: 여기서 exit는 일반적인 노드 js 프로그램을 종료하는 것을 의미합니다.예를 들어 이 코드가 dbOperations.js라는 파일에 있는 경우 프로세스입니다.종료하면 종료되고 프로세스 후에 이어지는 코드가 실행되지 않습니다.퇴장

ctrl현재C 프로세스를 종료합니다.
twice는 REPL 셸을 종료하는 ctrl것입니다C.
REP SHELL을 ctrl종료합니다c.

process.exit([code]) 함수를 사용할 수 있습니다.

하려면 '실패' 코드를 합니다.0:

process.exit(0);

'실패' 코드를 사용하여 종료하려면 다음과 같이 하십시오.1실행할 수 있습니다.

process.exit(1);

고장의 '고장' 코드는 응용 프로그램에 따라 다릅니다.그래서 당신은 그것을 위해 당신만의 관습을 사용할 수 있습니다.

Windows(윈도우)의 경우 작업 관리자로 이동한 다음 프로세스로 이동하여 "노드"라는 프로세스를 찾은 다음 마우스 오른쪽 단추로 해당 프로세스를 클릭하고 "프로세스 종료" 옵션을 클릭합니다.

언급URL : https://stackoverflow.com/questions/5266152/how-to-exit-in-node-js

반응형