Остановить все экземпляры сервера node.js

Это мой первый опыт работы с Node.js, и я столкнулся с этой проблемой:

Я начал сервер Node через плагин среды IDE. К сожалению, я не могу использовать терминал IDE. Поэтому я попытался запустить script из командной строки.

В этом проблема - я использую модуль Express, и мое приложение прослушивает какой-то порт (8080). Когда я запускаю приложение из командной строки, он выдает эту ошибку:

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)

Несмотря на то, что я не очень уверен, что это за ошибка, я предположил, что это потому, что приложение прослушивает порт, который уже используется. Итак, я сделал:

netstat -an

Я вижу

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

Это потому, что сервер Node уже запущен, когда я попытался запустить его из среды IDE.

Итак, я хочу знать, как я могу остановить все экземпляры сервера? Также, если вы можете сказать мне, как определить, что работает на порту, и убить его.

Ответ 1

Машина Windows:

Нужно убить сервер Node.js, и у вас нет каких-либо других Node процессов, вы можете сообщить своей машине, чтобы они уничтожили все процессы с именем node.exe. Это будет выглядеть так:

taskkill /im node.exe

И если процессы все еще сохраняются, вы можете заставить процессы завершить работу, добавив флаг /f:

taskkill /f /im node.exe

Если вам нужно более мелкомасштабное управление и нужно только убить сервер, работающий на определенном порту, вы можете использовать netstat, чтобы найти идентификатор процесса, а затем отправить на него сигнал об ошибке. Поэтому в вашем случае, когда порт 8080, вы можете запустить следующее:

C:\>netstat -ano | find "LISTENING" | find "8080"

Пятый столбец вывода - это идентификатор процесса:

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       14828
  TCP    [::]:8080              [::]:0                 LISTENING       14828

Затем вы можете убить процесс с помощью taskkill /pid 14828. Если процесс отказывается выйти, просто добавьте параметр /f (force) в команду.


Linux-машина:

Процесс почти идентичен. Вы можете либо убить все Node процессы, запущенные на машине (используйте -$SIGNAL, если SIGKILL недостаточно):

killall node

Или также используя netstat, вы можете найти PID процесса, прослушивающего порт:

$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node

Идентификатором процесса в этом случае является число перед именем процесса в шестом столбце, которое затем можно передать команде kill:

$ kill 1073

Если процесс отказывается выйти, просто используйте флаг -9, который является SIGTERM и не может быть проигнорирован:

$ kill -9 1073

Ответ 2

Самый быстрый способ -

killall node

Работает с Linux, OS X

Ответ 3

Вы можете использовать lsof получить процесс, связанный с необходимым портом.

К сожалению, флаги кажутся разными в зависимости от системы, но в Mac OS X вы можете запускать

lsof -Pi | grep LISTEN

Например, на моей машине я получаю что-то вроде:

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)

Второе число - это PID, а порт, который они прослушивают, находится справа перед "(LISTEN)". Найдите PID-изгоев и kill -9 $PID, чтобы прервать его с крайними предрассудками.

Ответ 4

Терминал Windows & GitBash Мне нужно было использовать эту команду в терминале Windows/Webstorm/GitBash

cmd "/C TASKKILL /IM node.exe /F"

Ответ 5

если вы хотите уничтожить определенный процесс узла, вы можете перейти к маршруту командной строки и ввести:

ps aux | grep node

чтобы получить список всех идентификаторов процессов узла. теперь вы можете получить идентификатор процесса (pid), затем делать:

kill -9 PID

и если вы хотите уничтожить все процессы узла, выполните:

killall -9 node

Переключатель -9 подобен конечной задаче в Windows. это заставит процесс закончиться. Вы можете сделать:

kill -l

чтобы увидеть все переключатели команды kill и их комментарии.

Ответ 6

Вы можете попробовать следующее:

taskkill /IM node.exe -F

Ответ 7

Вы также можете попробовать:

killall nodejs

Ответ 8

Linux

Чтобы произвести впечатление на своих друзей

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9

Но это тот, который вы будете помнить

killall node

Ответ 9

Если вы используете Windows, выполните следующие действия:

1) Откройте диспетчер задач, ищите этот процесс: http://prntscr.com/kv3uqx

2) Затем просто щелкните правой кнопкой мыши и "Завершить задачу".

3) Теперь все команды npm запускаются с самого начала.

Надеюсь, это поможет кому-нибудь!

ура

Ответ 10

ты можешь попробовать

killall node

Вы также можете попробовать

killall nodejs

Ответ 11

Am Использование окон Операционная система.

Я убил весь процесс node и перезапустил приложение, с которым он работал.

попробовать

taskkill /im node.exe

Ответ 12

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

    @echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF

Ответ 13

Мультиплатформенное, стабильное, лучшее решение:

используйте fkill, чтобы убить процесс, который принимает ваш порт:

fkill -f :8080

Для установки fkill используйте команду: npm я -g fkill

Ответ 14

он отлично работает в Windows 10

taskkill /f /im node.exe

Ответ 15

в windows введите команду command blow:

taskkill/f/im node.exe

Ответ 16

Нажмите в cmd или bash: Ctrl + C