这是我第一次使用Node.js,遇到了这个问题:
我已经通过IDE的插件启动了节点服务器。不幸的是,我无法使用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服务器时,它已经启动了。
所以我想知道,如何停止所有服务器实例?另外,如果您能告诉我如何检测端口上正在运行的内容并杀死它。
Windows机器:
需要终止Node.js服务器,并且您没有运行任何其他Node进程,则可以告诉您的计算机终止名为的所有进程node.exe
。看起来像这样:
taskkill /im node.exe
如果进程仍然存在,则可以通过添加/f
标志来强制进程终止:
taskkill /f /im node.exe
如果您需要更细粒度的控制,并且只需要终止在特定端口上运行的服务器,则可以使用它netstat
来查找进程ID,然后向其发送终止信号。因此,在您的情况下,端口为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
(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
在这种情况下,进程ID是第六列中进程名称之前的数字,然后您可以将其传递给kill
命令:
$ kill 1073
如果该进程拒绝退出,则只需使用该-9
标志,它是一个SIGTERM
并且不能被忽略:
$ kill -9 1073
最快的方法是
killall node
适用于Linux,OS X
您可以使用lsof
get绑定到所需端口的进程。
不幸的是,根据系统的不同,这些标志似乎有所不同,但是在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
以极端的偏见终止。
Windows&GitBash终端
我需要在Windows / Webstorm / GitBash终端内使用此命令
cmd "/C TASKKILL /IM node.exe /F"
如果要终止特定的节点进程,可以转到命令行route并输入:
ps aux | grep node
获取所有节点进程ID的列表。现在您可以获取进程ID(pid),然后执行以下操作:
kill -9 PID
如果要杀死所有节点进程,请执行以下操作:
killall -9 node
-9开关就像Windows上的最终任务。它将迫使该过程结束。你可以做:
kill -l
查看kill命令的所有开关及其注释。
您可以尝试以下方法:
taskkill /IM node.exe -F
的Linux
打动你的朋友
ps aux | grep -i node | awk '{print $2}' | xargs kill -9
但这是你会记得的
killall node
您也可以尝试:
killall nodejs
多平台,稳定,最佳解决方案:
使用fkill杀死正在占用您端口的进程:
fkill -f :8080
要安装fkill,请使用命令:npm i -g fkill
它在Windows 10中正常工作
taskkill /f /im node.exe
你可以试试
killall node
你也可以尝试
killall nodejs
如果您使用的是Windows,请按照以下步骤操作:
我正在使用Windows操作系统。
我杀死了所有节点进程,然后重新启动了能正常工作的应用程序。
尝试
taskkill /im node.exe
使用以下命令从批处理文件中杀死并重新启动节点服务器
@echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF
在Windows命令中键入命令打击:
taskkill / f / im node.exe
按cmd或bash键:Ctrl + C
文章标签:express , javascript , node.js , port , windows
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!