这是我第一次使用Node.js时遇到了这个问题:
我已经通过IDE的插件启动了一个Node服务器。不幸的是,我无法使用IDE的终端。所以我尝试从命令行运行脚本。
这是问题 - 我正在使用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
这是因为当我尝试从IDE启动Node服务器时,它已经启动了。
所以我想知道,如何停止所有服务器实例?此外,如果您可以告诉我如何检测端口上正在运行的内容并将其终止。
答案 0 :(得分:301)
需要杀死Node.js服务器,并且您没有运行任何其他Node进程,您可以告诉您的计算机终止所有名为node.exe
的进程。这看起来像这样:
taskkill /im node.exe
如果进程仍然存在,您可以通过添加/f
标志来强制进程终止:
taskkill /f /im node.exe
如果您需要更细粒度的控制并且只需要杀死在特定端口上运行的服务器,您可以使用netstat
来查找进程ID,然后向其发送一个kill信号。因此,在您的情况下,端口为8080
,您可以运行以下命令:
C:\>netstat -ano | find "LISTENING" | find "8080"
输出的第五列是进程ID:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 14828
TCP [::]:8080 [::]:0 LISTENING 14828
然后您可以使用taskkill /pid 14828
终止该过程。如果进程拒绝退出,则只需将/f
(强制)参数添加到命令中。
这个过程几乎完全相同。您可以杀死计算机上运行的所有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
在这种情况下,进程ID是第六列中进程名称之前的数字,然后您可以将其传递给kill
命令:
$ kill 1073
如果进程拒绝退出,那么只需使用-9
标记SIGTERM
并且不能忽略:
$ kill -9 1073
答案 1 :(得分:63)
最快的方法是
killall node
适用于Linux,OS X
答案 2 :(得分:44)
您可以使用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
以极端偏见终止。
答案 3 :(得分:14)
Windows&amp; GitBash终端 我需要在Windows / Webstorm / GitBash终端
中使用此命令cmd "/C TASKKILL /IM node.exe /F"
答案 4 :(得分:9)
如果要杀死特定进程,可以转到命令行路由:
ps aux | grep node
获取进程ID然后 做:
kill -9 PID
如果要杀死所有进程,请执行以下操作:
killall -9 node
答案 5 :(得分:8)
你可以试试这个:
taskkill /IM node.exe -F
答案 6 :(得分:2)
您也可以尝试:
killall nodejs
答案 7 :(得分:1)
如果您使用的是Windows,请按照以下步骤操作:
1)打开任务管理器,寻找以下过程:http://prntscr.com/kv3uqx
2)然后右键单击并“结束任务”。
3)就这样,现在所有npm命令都从头开始运行。
希望对您有所帮助!
欢呼
答案 8 :(得分:1)
Linux
打动你的朋友
ps aux | grep -i node | awk '{print $2}' | xargs kill -9
但这是您会记住的那个
killall node
答案 9 :(得分:0)
使用以下命令从批处理文件中杀死并重启节点服务器
@echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF
答案 10 :(得分:0)
答案 11 :(得分:0)
您可以尝试
killall node
您也可以尝试
killall nodejs
答案 12 :(得分:0)
使用Windows操作系统。
我杀死了所有节点进程并重新启动了它运行的应用程序。
试
taskkill /im node.exe
答案 13 :(得分:0)
在Windows 10中正常工作
taskkill /f /im node.exe
答案 14 :(得分:0)
您可以搜索如何终止该进程。
对于Linux / Mac OS搜索(sudo),请在终端中运行它:
$ lsof -i tcp:8080
$ kill -9 PID
在Windows上:
netstat -ano | findstr :8080
tskill typeyourLISTENINGPIDhere
答案 15 :(得分:0)
因为您指定了 Windows。如果您想将其包含在 bat 文件中,您可能不希望它在进程未运行时生成错误。
所以,为了防止“ERROR: The process "node.exe" not found.”,你可以添加一个过滤器:
TASKKILL /F /IM node.exe /FI "PID gt 0"
答案 16 :(得分:-1)
在Windows命令中 键入命令打击:
taskkill / f / im node.exe
答案 17 :(得分:-2)
按下cmd或bash: Ctrl + C