Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как убить открытый процесс на node.js?

Автор вопроса: MaiaVictorОтветов: 5

Я пытаюсь настроить систему сборки для Node.js на возвышенном, поэтому я могу нажать F7, чтобы вызвать "узел" в открытом файле. Проблема в том, что процесс затем открыт навсегда, поэтому при втором использовании F7 я получаю надстройку.

Есть ли способ убить открытый процесс "node.exe" из node.js?

  • Возможный дубликат остановить все экземпляры сервера node.js rofrol 28.11.2015

windowswindows-xpkill-process

Ответы

Ответ 1 · рейтинг 44 · almypal

Используйте следующий набор команд, чтобы определить процесс, работающий на данном порту, и завершить его из командной строки.

   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, соответствующий процессу вашего узла, в данном случае 3592. Затем запустите taskkill, чтобы завершить процесс.

  C:\> taskkill /F /PID 3592

Или переключатель /IM

  C:\> taskkill /F /IM node.exe

Ответ 2 · рейтинг 3 · Alex W

Изнутри Node.js:

var die = function(quitMsg)
{
    console.error(quitMsg)
    process.exit(1);
}

die('Process quit');

Существуют определенные методы для выхода, доступные только для POSIX (т.е. не для Windows), которые выйдет из процесса по его идентификатору процесса.

Кроме того, обратите внимание, что вы можете отправить сигнал kill(), используя этот метод, который не говорит, что он недоступен для Windows:

process.kill(pid, [signal])

Ответ 3 · рейтинг 3 · Renish Gotecha

Если вы хотите убить все процессы, чем:

sudo killall -9 node

Если вы хотите убить процесс на выбранном порту, чем:

sudo kill sudo lsof -t -i:3100

Это был порт 3100

Ответ 4 · Community

Если возвышенное вы говорите, это плагин sublimeText, у меня такая же проблема, и я отправляю TCP-серверу сообщение "закрытие" из кода Python, затем

app.js

 TCPserver
        .on('connection', function(socket)
        {
            socket.pipe(require('through')
                (function(data)
                { //----------------------------
                    if (data.toString() === 'shutdown')
                    {
                        process.exit();
                    }
                    //--------------------------
                }));
            socket.end();
        })

Ответ 5 · daniel.caspers

Аналогично тому, что сказал @Alex W, вы можете отправить сигнал уничтожения процессу, если у вас есть его идентификатор процесса или PID, используя следующую функцию узла:

process.kill(pid, [signal])

В моем случае у меня были легко доступные PID, когда я создавал child_process().spawn.pid. Я протестировал его, и он работает на Win 7 x64.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы