Как убить открытый процесс на node.js?
Я пытаюсь настроить систему сборки для Node.js на sublime, поэтому я могу нажать F7, чтобы вызвать "node" в открытом файле. Проблема в том, что процесс затем открывается навсегда, поэтому во второй раз, когда я использую F7, я получаю надбавку.
Есть ли способ убить открытый < node.exe "процесс из Node.js?
Ответы
Ответ 1
Используйте следующий набор команд для идентификации процесса, выполняющегося на данном порту, и для его завершения из командной строки
sudo fuser -v 5000/tcp // gives you the process running on port 5000
Он выведет детали, похожие на приведенные ниже
USER PID ACCESS COMMAND
5000/tcp: almypal 20834 F.... node
Затем используйте
sudo fuser -vk 5000/tcp
чтобы завершить процесс. Еще раз проверьте, используя
sudo fuser -v 5000/tcp
чтобы гарантировать завершение процесса.
В Windows вы можете использовать следующие шаги
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
Обратите внимание на PID, соответствующий вашему процессу node, в этом случае 3592. Далее запустите taskkill, чтобы завершить процесс.
C:\> taskkill /F /PID 3592
Очередь/IM-переключатель
C:\> taskkill /F /IM node.exe
Ответ 2
Из Node.js:
var die = function(quitMsg)
{
console.error(quitMsg)
process.exit(1);
}
die('Process quit');
Существуют определенные методы, доступные для выхода, которые доступны только для POSIX (то есть не для Windows), которые выйдут из процесса по его идентификатору процесса.
Также обратите внимание, что вы можете отправить сигнал kill() с помощью этого метода, который не говорит, что он недоступен для Windows:
process.kill(pid, [signal])
Ответ 3
Если возвышенность, которую вы говорите, является плагином sublimeText, у меня такая же проблема и отправьте TCP-сервер сообщение "shutdown" из кода python, затем
app.js
TCPserver
.on('connection', function(socket)
{
socket.pipe(require('through')
(function(data)
{ //----------------------------
if (data.toString() === 'shutdown')
{
process.exit();
}
//--------------------------
}));
socket.end();
})
Ответ 4
Аналогично тому, что сказал @Alex W, вы можете отправить сигнал уничтожения процессу до тех пор, пока у вас есть его идентификатор процесса или PID, используя следующую функцию node:
process.kill(pid, [signal])
В моем случае у меня были доступные PID, так как я был нерестом child_process().spawn.pid
. Я тестировал его, и он работает на Win 7 x64.