373 Stimmen

Node.js-Programm von der Kommandozeile aus stoppen

Ich habe einen einfachen TCP-Server, der auf einen Port wartet.

var net = require("net");

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

server.listen(7777);

Ich beginne es mit node server.js und schließe es dann mit Strg + Z auf dem Mac. Wenn ich versuche, es erneut mit node server.js Ich erhalte diese Fehlermeldung:

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)

Schließe ich das Programm auf die falsche Weise? Wie kann ich dies verhindern?

22voto

sunny1304 Punkte 1672

Können Sie eingeben .exit zum Beenden der node js REPL

20voto

Jason Punkte 1652

Auf Linux versuchen: pkill node

unter Windows:

Taskkill /IM node.exe /F

oder

from subprocess import call

call(['taskkill', '/IM', 'node.exe', '/F'])

17voto

Maxim Yefremov Punkte 12593

$ sudo killall node in einem anderen Terminal arbeitet an mac , während killall node nicht funktioniert:

$ killall node
No matching processes belonging to you were found

14voto

Ank_247shbm Punkte 414

Sie können folgenden Befehl ausführen, um den Lokalserver gezielt zu töten (hier: 8000)

http://localhost:8000/ PID(processId) töten:

$:lsof -i tcp:8000

Sie erhalten die folgenden Gruppen von TCPs:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

Knoten 21521 ubuntu 12u IPv6 345668 0t0 TCP *:8000 (LISTEN)

$:kill -9 21521

Es wird processId, die TCP*:8000 entspricht, beendet.

9voto

Vikram Bankar Punkte 366

Sie können verwenden Fixiereinrichtung um das zu erreichen, was Sie erreichen wollen.

Um die Prozess-IDs der auf einem Anschluss laufenden Aufgaben zu erhalten, können Sie Folgendes tun:

fuser <<target_port>>/tcp

Nehmen wir an, der Port ist 8888, dann lautet der Befehl:

fuser 8888/tcp

Und an töten einen Prozess, der auf einem Port läuft, fügen Sie einfach den Schalter -k hinzu.

fuser <<target_port>>/tcp -k

Beispiel (Port ist 8888):

fuser 8888/tcp -k

Das war's! Es schließt den Prozess, der den Port abhört. Normalerweise mache ich dies, bevor ich meine Serveranwendung ausführe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X