포트에서 수신 대기하는 간단한 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
하면 프로그램이 수신 대기중인 포트에서 바인딩을 해제하여 프로그램이 정상적으로 종료되도록합니다.
답변
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는 일시 중단합니다. 이는 여전히 일시 중단 된 백그라운드 프로세스로 실행되고 있음을 의미합니다.
이제 터미널 프롬프트에있을 것입니다 …
-
fg
포 그라운드에서 프로세스를 재개 하도록 명령 을 제공하십시오 . -
제대로 죽이려면 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