javascript - instalar - node js express tutorial
detener todas las instancias del servidor node.js (9)
Esta es la primera vez que trabajo con Node.js y me encontré con este problema:
Empecé un servidor de nodo a través del complemento de un IDE. Lamentablemente, no puedo usar la terminal IDE. Así que traté de ejecutar el script desde la línea de comando.
Este es el problema: estoy usando el módulo Express y mi aplicación está escuchando algún puerto (8080). Cuando inicio la aplicación desde la línea de comando, arroja este error:
events.js:71
throw arguments[1]; // Unhandled ''error'' event
^
Error: listen EADDRINUSE
at errnoException (net.js:770:11)
at HTTPServer.Server._listen2 (net.js:910:14)
at listen (net.js:937:10)
at HTTPServer.Server.listen (net.js:986:5)
at Object.<anonymous> (C:/xampp/htdocs/node/chat/app.js:5:5)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
Aunque no estoy muy seguro de qué podría ser este error, asumí que es porque la aplicación está escuchando en un puerto que ya está en uso. Así que lo hice:
netstat -an
puedo ver
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING
Es porque el servidor Nodo ya está iniciado cuando intenté arrancarlo desde el IDE.
Entonces quiero saber, ¿cómo puedo detener todas las instancias del servidor? También si puedes decirme cómo detectar lo que se está ejecutando en un puerto y matarlo.
Máquina de Windows:
Necesitas matar a un servidor Node.js, y no tienes ningún otro proceso Node ejecutándose, puedes decirle a tu máquina que mate todos los procesos llamados node.exe
. Eso se vería así:
taskkill /im node.exe
Y si los procesos aún persisten, puede forzar a los procesos a terminar agregando el indicador /f
:
taskkill /f /im node.exe
Si necesita un control más detallado y necesita matar solo un servidor que se está ejecutando en un puerto específico, puede usar netstat
para encontrar el ID del proceso y luego enviarle una señal de cancelación. Entonces, en su caso, donde el puerto es 8080
, podría ejecutar lo siguiente:
C:/>netstat -ano | find "LISTENING" | find "8080"
La quinta columna de la salida es la ID del proceso:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 14828
TCP [::]:8080 [::]:0 LISTENING 14828
A continuación, puede matar el proceso con taskkill /pid 14828
. Si el proceso se niega a salir, simplemente agregue el parámetro /f
(force) al comando.
Máquina Linux:
El proceso es casi idéntico. Puede eliminar todos los procesos de Nodo que se ejecutan en la máquina (use -$SIGNAL
si SIGKILL
es insuficiente):
killall node
O también usando netstat
, puede encontrar el PID de un proceso que escucha en un puerto:
$ netstat -nlp | grep :8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1073/node
El ID del proceso en este caso es el número anterior al nombre del proceso en la sexta columna, que luego puede pasar al comando kill
:
$ kill 1073
Si el proceso se niega a salir, simplemente use la bandera -9
, que es un SIGTERM
y no se puede ignorar:
$ kill -9 1073
Estoy usando el sistema operativo Windows.
Maté todo el proceso del nodo y reinicié la aplicación que funcionó.
tratar
taskkill /im node.exe
La forma más rápida es
killall node
Funciona con Linux, OS X
Presione en cmd o bash: Ctrl + C
Puede usar lsof
obtener el proceso que se ha vinculado al puerto requerido.
Desafortunadamente las banderas parecen ser diferentes dependiendo del sistema, pero en Mac OS X puedes ejecutar
lsof -Pi | grep LISTEN
Por ejemplo, en mi máquina consigo algo como:
mongod 8662 jacob 6u IPv4 0x17ceae4e0970fbe9 0t0 TCP localhost:27017 (LISTEN)
mongod 8662 jacob 7u IPv4 0x17ceae4e0f9c24b1 0t0 TCP localhost:28017 (LISTEN)
memcached 8680 jacob 17u IPv4 0x17ceae4e0971f7d1 0t0 TCP *:11211 (LISTEN)
memcached 8680 jacob 18u IPv6 0x17ceae4e0bdf6479 0t0 TCP *:11211 (LISTEN)
mysqld 9394 jacob 10u IPv4 0x17ceae4e080c4001 0t0 TCP *:3306 (LISTEN)
redis-ser 75429 jacob 4u IPv4 0x17ceae4e1ba8ea59 0t0 TCP localhost:6379 (LISTEN)
El segundo número es el PID y el puerto que están escuchando está a la derecha antes de "(ESCUCHAR)". Encuentra el PID deshonesto y kill -9 $PID
para terminar con prejuicio extremo.
Puedes intentar esto:
taskkill /IM node.exe -F
También puedes probar:
killall nodejs
si quieres eliminar un proceso específico, puedes ir a la ruta de línea de comando:
ps aux | grep node
para obtener la identificación del proceso y luego hacer:
kill -9 PID
y si quieres matar a todos los procesos, hazlo:
killall -9 node
Windows & GitBash Terminal I necesitaba usar este comando dentro de la terminal de Windows / Webstorm / GitBash
cmd "/C TASKKILL /IM node.exe /F"