[node.js] 명령 행에서 node.js 프로그램 중지

포트에서 수신 대기하는 간단한 TCP 서버가 있습니다.

var net = require("net");

var server = net.createServer(function(socket) {
    socket.end("Hello!\n");
});

server.listen(7777);

나는 그것을 시작 node server.js하고 닫기를 Mac에서 Ctrl + Z와. 다시 실행하려고 node server.js하면이 오류 메시지가 나타납니다.

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
          ^
Error: listen EADDRINUSE
at errnoException (net.js:670:11)
at Array.0 (net.js:771:26)
at EventEmitter._tickCallback (node.js:192:41)

프로그램을 잘못 닫고 있습니까? 이 문제가 발생하지 않도록하려면 어떻게해야합니까?



답변

프로그램을 끝내려면 Ctrl+ 를 사용해야합니다 C. 그렇게 SIGINT하면 프로그램이 수신 대기중인 포트에서 바인딩을 해제하여 프로그램이 정상적으로 종료되도록합니다.

참조 : https://superuser.com/a/262948/48624


답변

Ctrl+ Z일시 중단하므로 여전히 실행할 수 있습니다.

Ctrl+ C실제로 그것을 죽일 것입니다.

다음과 같이 수동으로 죽일 수도 있습니다.

ps aux | grep node

프로세스 ID를 찾으십시오 (왼쪽에서 두 번째).

kill -9 PROCESS_ID

이것은 또한 작동 할 수 있습니다

killall node


답변

또는이 모든 것을 한 줄로 수행 할 수도 있습니다.

kill -9 $(ps aux | grep '\snode\s' | awk '{print $2}')

‘\ snode \ s’안의 노드를 다른 프로세스 이름으로 바꿀 수 있습니다.


답변

프로세스를 재개하고 종료하십시오.

Ctrl+ Z는 일시 중단합니다. 이는 여전히 일시 중단 된 백그라운드 프로세스로 실행되고 있음을 의미합니다.

이제 터미널 프롬프트에있을 것입니다 …

  1. fg포 그라운드에서 프로세스를 재개 하도록 명령 을 제공하십시오 .

  2. 제대로 죽이려면 Ctrl+ C를 입력 하십시오.


또는 다음과 같이 수동으로 죽일 수 있습니다.

( 참고 : 다음 명령은 루트가 필요할 수 있으므로 sudo ...친구도 필요합니다 )

pkill -9 node

또는 pkill이없는 경우 다음과 같이 작동 할 수 있습니다.

killall node

또는 아마도 이것 :

kill $(ps -e | grep node | awk '{print $1}')

때로는 프로세스에 자체 grep이 나열되며,이 경우 다음이 필요합니다.

kill $(ps -e | grep dmn | awk '{print $2}')

.


질문 자체에 대한 의견에서 h / t @ruffin. 나는 같은 문제가 있었고 그의 의견은 그것을 스스로 해결하는 데 도움이되었습니다.


답변

.exit 노드 js REPL을 종료하도록 입력 할 수 있습니다.


답변

Node.js를 대화식으로 실행하는 경우 (REPL) :

Ctrl+ C는 프롬프트로 돌아가서 다음을 입력합니다 :

process.exit()

또는 그냥 Ctrl+를 사용하십시오 D.


답변

$ sudo killall node다른 터미널에서는 작동 하지 않지만 mac 에서 killall node작동합니다.

$ killall node
No matching processes belonging to you were found