Detenga el programa node.js desde la línea de comando

Resuelto Eleeist asked hace 12 años • 19 respuestas

Tengo un servidor TCP simple que escucha en un puerto.

var net = require("net");

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

server.listen(7777);

Lo comienzo con node server.jsy luego lo cierro con Ctrl+ Zen Mac. Cuando intento ejecutarlo nuevamente, node server.jsaparece este mensaje de error:

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)

¿Estoy cerrando el programa de forma incorrecta? ¿Cómo puedo evitar que esto suceda?

Eleeist avatar May 10 '12 02:05 Eleeist
Aceptado

Para finalizar el programa, deberías usar Ctrl+ C. Si hace eso, envía SIGINT, lo que permite que el programa finalice correctamente, desvinculándose de cualquier puerto en el que esté escuchando.

Ver también: https://superuser.com/a/262948/48624

Brad avatar May 09 '2012 19:05 Brad

Ctrl+ Zlo suspende, lo que significa que aún puede estar ejecutándose.

Ctrl+ Crealmente lo matará.

También puedes matarlo manualmente así:

ps aux | grep node

Busque el ID del proceso (segundo desde la izquierda):

kill -9 PROCESS_ID

Esto también puede funcionar

killall node
Jamund Ferguson avatar May 09 '2012 19:05 Jamund Ferguson

O alternativamente puedes hacer todo esto en una sola línea:

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

Puede reemplazar el nodo dentro de '\snode\s' con cualquier otro nombre de proceso.

Hamid Tavakoli avatar Sep 22 '2014 15:09 Hamid Tavakoli

Reanudar y finalizar el proceso:

Ctrl+ Zlo suspende, lo que significa que todavía se está ejecutando como un proceso en segundo plano suspendido.

Probablemente ahora estés en un indicador de terminal...

  1. Dé la orden fgpara reanudar el proceso en primer plano.

  2. Escriba Ctrl+ Cpara eliminarlo correctamente.


Alternativamente, puedes eliminarlo manualmente de esta manera:

( NOTA: los siguientes comandos pueden requerir root, al igual sudo ...que tu amigo)

pkill -9 node

o, si no tienes pkill, esto puede funcionar:

killall node

o tal vez esto:

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

A veces el proceso listará su propio grep, en cuyo caso necesitarás:

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

h/t @ruffin de los comentarios sobre la pregunta en sí. Tuve el mismo problema y su comentario me ayudó a resolverlo yo mismo.

Metagrapher avatar May 26 '2017 21:05 Metagrapher

Si está ejecutando Node.js de forma interactiva (el REPL):

Ctrl+ Clo llevará de regreso al mensaje > y luego escriba:

process.exit()

o simplemente use Ctrl+ D.

sr77in avatar Feb 15 '2014 07:02 sr77in