停止node.js服务器的所有实例

时间:2013-02-09 19:55:02

标签: javascript windows node.js express port

这是我第一次使用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服务器时,它已经启动了。

所以我想知道,如何停止所有服务器实例?此外,如果您可以告诉我如何检测端口上正在运行的内容并将其终止。

18 个答案:

答案 0 :(得分:301)

Windows机器:

需要杀死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(强制)参数添加到命令中。


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

答案 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)

多平台,稳定,最佳的解决方案:

使用 fkill 杀死占用您端口的进程:

fkill -f :8080

要安装fkill,请使用命令: npm i -g fkill

答案 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