zatrzymaj wszystkie instancje węzła.serwer js

To mój pierwszy raz w pracy z Node.js i ja natknąłem się na ten problem:

Uruchomiłem Serwer węzłów poprzez wtyczkę IDE. Niestety nie mogę użyć terminala IDE. Więc próbowałem uruchomić skrypt z linii poleceń.

To jest problem-używam modułu Express i moja aplikacja nasłuchuje jakiegoś portu (8080). Kiedy uruchamiam aplikację z linii poleceń, wyrzuca ten błąd:

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)

Mimo, że nie jestem bardzo pewien, co ten błąd może być I zakłada się, że to dlatego, że aplikacja nasłuchuje na porcie, który jest już w użyciu. Więc zrobiłem:

netstat -an

Widzę

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

To dlatego, że serwer węzłów jest już uruchomiony, gdy próbowałem go uruchomić z IDE.

Więc chcę wiedzieć, jak Mogę zatrzymać wszystkie instancje serwera? Możesz mi też powiedzieć, jak wykryć, co działa na porcie i go zabić.

Author: hexacyanide, 2013-02-09

11 answers

Windows Machine:

Trzeba zabić węzeł.js server i nie masz uruchomionych innych procesów węzła, możesz powiedzieć swojej maszynie, aby zabiła wszystkie procesy o nazwie node.exe. To by wyglądało tak:

taskkill /im node.exe

I jeśli procesy nadal utrzymują się, możesz wymusić ich zakończenie, dodając flagę /f:

taskkill /f /im node.exe

Jeśli potrzebujesz więcej kontroli drobnoziarnistej i musisz zabić tylko serwer, który działa na określonym porcie, możesz użyć netstat, aby znaleźć ID procesu, a następnie wysłać do niego sygnał kill. Tak więc w Twoim przypadku, gdzie port jest 8080, możesz uruchomić następujące:

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

Piątą kolumną wyjścia jest ID procesu:

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

Możesz następnie zabić proces za pomocą taskkill /pid 14828. Jeśli proces odmawia zakończenia, po prostu dodaj parametr /f (force) do polecenia.


Maszyna Linuksowa:

Proces jest prawie identyczny. Można albo zabić wszystkie procesy węzłowe uruchomione na maszyna (użyj -$SIGNAL Jeśli SIGKILL jest niewystarczająca):

killall node
W tym przypadku proces może być ustawiony na 100%, a proces może być ustawiony na 100%.]}
$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node

Identyfikator procesu w tym przypadku jest numerem przed nazwą procesu w szóstej kolumnie, którą można następnie przekazać do polecenia kill:

$ kill 1073
Jeśli proces odmawia zakończenia, po prostu użyj znacznika -9, który jest SIGTERM i nie może być zignorowany:
$ kill -9 1073
 232
Author: hexacyanide,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-25 16:20:52

Najszybsza droga to

killall node

Działa z Linuksem, OS X

 48
Author: zag2art,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 15:01:06

Możesz użyć lsof aby uzyskać proces, który ma przypisany do wymaganego portu.

Niestety flagi wydają się być różne w zależności od systemu, ale na Mac OS X można uruchomić

lsof -Pi | grep LISTEN

Na przykład na mojej maszynie dostaję coś w stylu:

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)

Druga liczba to PID, a port, którego słuchają, znajduje się po prawej stronie przed "(LISTEN)". Znajdź zbuntowanego PID i kill -9 $PID zakończ z skrajnym uprzedzeniem.

 39
Author: Jacob Groundwater,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-17 11:29:05

Windows & GitBash Terminal Musiałem użyć tego polecenia wewnątrz terminala Windows / Webstorm / GitBash

cmd "/C TASKKILL /IM node.exe /F"
 10
Author: Enkode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 12:24:04

Możesz spróbować tego:

taskkill /IM node.exe -F
 8
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 13:35:57

Jeśli chcesz zabić określony proces, możesz przejść do linii poleceń:

ps aux | grep node

Aby uzyskać identyfikator procesu, a następnie do:

kill -9 PID

A jeśli chcesz zabić wszystkie procesy to wykonaj:

killall -9 node
 4
Author: Ali_Hr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 06:38:10

Możesz też spróbować:

killall nodejs

 2
Author: Digitlimit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 14:11:00

Używam systemu operacyjnego windows.

Zabiłem cały proces węzła i uruchomiłem ponownie aplikację, która działała.

Try

taskkill /im node.exe
 0
Author: Sathya Baman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 11:54:33

Jeśli używasz systemu windows, wykonaj następujące czynności:

1) Otwórz Menedżera zadań, poszukaj tego procesu: http://prntscr.com/kv3uqx

2) następnie kliknij prawym przyciskiem myszy i" Zakończ zadanie".

3) to wszystko, teraz wszystkie komendy npm uruchamiane są od początku.

Mam nadzieję, że komuś pomoże!

Cheers

 0
Author: Neil Bannet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-16 19:07:56

Użyj następującego polecenia, aby zabić i ponownie uruchomić serwer węzła z pliku wsadowego

    @echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF
 0
Author: Samadhan Virkar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-01 13:18:25

Naciśnij w cmd lub bash : Ctrl + C

 -2
Author: Altynbek S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-24 06:47:06