Остановить все экземпляры сервера 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