Detenga el programa node.js desde la línea de comando
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.js
y luego lo cierro con Ctrl+ Zen Mac. Cuando intento ejecutarlo nuevamente, node server.js
aparece 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?
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
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
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.
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...
Dé la orden
fg
para reanudar el proceso en primer plano.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.
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.