windows - killall - ¿Cómo matar un proceso abierto en node.js?
kill all processes node js (4)
Estoy intentando configurar un sistema de compilación para Node.js en sublime, así que puedo presionar F7 para llamar "nodo" en el archivo abierto. El problema es que el proceso está abierto para siempre, por lo que, la segunda vez que uso F7 obtengo un complemento.
¿Hay alguna manera de que pueda matar el proceso "node.exe" abierto desde node.js?
De manera similar a lo que dijo @Alex W, puede enviar una señal de interrupción al proceso siempre que tenga su ID de proceso o PID utilizando la siguiente función de nodo:
process.kill(pid, [signal])
En mi caso, tenía los PID disponibles cuando estaba generando child_process().spawn.pid
. Lo he probado y funciona en Win 7 x64.
Desde dentro de Node.js:
var die = function(quitMsg)
{
console.error(quitMsg)
process.exit(1);
}
die(''Process quit'');
Existen ciertos métodos disponibles para salir que solo están disponibles para POSIX (es decir, no para Windows) que saldrán de un proceso por su ID de proceso.
Además, tenga en cuenta que es posible que pueda enviar una señal kill () utilizando este método, que no indica que no esté disponible para Windows:
process.kill(pid, [signal])
Si lo sublime dice que es el complemento sublimeText, tengo el mismo problema, y le envío al servidor TCP un mensaje de "apagado" desde el código de Python, luego
app.js
TCPserver
.on(''connection'', function(socket)
{
socket.pipe(require(''through'')
(function(data)
{ //----------------------------
if (data.toString() === ''shutdown'')
{
process.exit();
}
//--------------------------
}));
socket.end();
})
Use el siguiente conjunto de comandos para identificar el proceso que se ejecuta en un puerto determinado y para clasificarlo desde la línea de comandos
sudo fuser -v 5000/tcp // gives you the process running on port 5000
Se mostrarán detalles similares a los que se muestran a continuación
USER PID ACCESS COMMAND
5000/tcp: almypal 20834 F.... node
Entonces use
sudo fuser -vk 5000/tcp
para terminar el proceso. Compruebe una vez más usando
sudo fuser -v 5000/tcp
Para asegurarse de que el proceso ha terminado.
En Windows puedes usar los siguientes pasos
C:/> tasklist // will show the list of running process''
Image Name PID Session Name Session# Mem Usage
System 4 console 0 236 K
...
node.exe 3592 console 0 8440 k
Tenga en cuenta el PID correspondiente a su proceso de nodo, en este caso 3592. A continuación, ejecute taskkill para finalizar el proceso.
C:/> taskkill /F /PID 3592
O / interruptor de IM
C:/> taskkill /F /IM node.exe