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

Kir*_*ati 150 javascript windows port node.js express

这是我第一次使用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)
Run Code Online (Sandbox Code Playgroud)

即使我不太确定这个错误是什么,我认为这是因为应用程序正在侦听已经在使用的端口.所以我做了:

netstat -an
Run Code Online (Sandbox Code Playgroud)

我可以看到

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING
Run Code Online (Sandbox Code Playgroud)

这是因为当我尝试从IDE启动Node服务器时,Node服务器已经启动了.

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

hex*_*ide 351

Windows机器:

需要杀死一个Node.js服务器,并且你没有运行任何其他Node进程,你可以告诉你的机器杀死所有名为的进程node.exe.这看起来像这样:

taskkill /im node.exe
Run Code Online (Sandbox Code Playgroud)

如果进程仍然存在,您可以通过添加/f标志来强制进程终止:

taskkill /f /im node.exe
Run Code Online (Sandbox Code Playgroud)

如果您需要更细粒度的控制并且只需要杀死在特定端口上运行的服务器,您可以使用它netstat来查找进程ID,然后向其发送一个kill信号.因此,在您的情况下,端口所在的位置8080,您可以运行以下命令:

C:\>netstat -ano | find "LISTENING" | find "8080"
Run Code Online (Sandbox Code Playgroud)

输出的第五列是进程ID:

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       14828
  TCP    [::]:8080              [::]:0                 LISTENING       14828
Run Code Online (Sandbox Code Playgroud)

然后你可以用它来杀死进程taskkill /pid 14828.如果进程拒绝退出,则只需将/f(force)参数添加到命令中.


Linux机器:

这个过程几乎完全相同.你可以杀死机器上运行的所有Node进程(-$SIGNAL如果SIGKILL不足则使用):

killall node
Run Code Online (Sandbox Code Playgroud)

或者也可以使用netstat,您可以找到在端口上侦听的进程的PID:

$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node
Run Code Online (Sandbox Code Playgroud)

在这种情况下,进程ID是第六列中进程名称之前的数字,然后您可以将其传递给kill命令:

$ kill 1073
Run Code Online (Sandbox Code Playgroud)

如果进程拒绝退出,那么只需使用-9标志,这是一个SIGTERM并且不能被忽略:

$ kill -9 1073
Run Code Online (Sandbox Code Playgroud)

  • 尝试`taskkill/IM node.exe`.它会杀死名为`node.exe`的所有进程. (2认同)
  • 我必须使用 taskkill /F /IM node.exe 才能使它工作,谢谢! (2认同)

zag*_*art 67

最快的方法是

killall node
Run Code Online (Sandbox Code Playgroud)

适用于Linux,OS X.

  • 对我不起作用。`node: no process found` 另外,当我 grep 查找在特定端口上运行的节点进程时,进程 ID 具有 `-` 而不是数字本身。 (3认同)

Jac*_*ter 46

您可以使用lsof获取已绑定到所需端口的进程.

不幸的是,根据系统的不同,标志似乎有所不同,但在Mac OS X上你可以运行

lsof -Pi | grep LISTEN
Run Code Online (Sandbox Code Playgroud)

例如,在我的机器上我得到类似的东西:

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)
Run Code Online (Sandbox Code Playgroud)

第二个数字是PID,他们正在收听的端口位于"(LISTEN)"之前的右侧.找到流氓PID并kill -9 $PID以极端偏见终止.


Enk*_*ode 17

Windows和GitBash终端 我需要在Windows/Webstorm/GitBash终端中使用此命令

cmd "/C TASKKILL /IM node.exe /F"
Run Code Online (Sandbox Code Playgroud)

  • 这个人为我做到了。谢谢 (4认同)
  • 这个也为我做到了。我发现这是杀死 Windows 上所有节点进程的最快方法。 (2认同)

Ali*_*_Hr 13

如果要杀死特定进程,可以转到命令行路由:

ps aux | grep node
Run Code Online (Sandbox Code Playgroud)

获取进程ID然后执行:

kill -9 PID
Run Code Online (Sandbox Code Playgroud)

如果你想杀死所有进程,那么:

killall -9 node
Run Code Online (Sandbox Code Playgroud)


Ale*_*sco 12

Linux

为了给你的朋友留下深刻印象

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9
Run Code Online (Sandbox Code Playgroud)

但这是你会记得的

killall node
Run Code Online (Sandbox Code Playgroud)


小智 8

你可以试试这个:

taskkill /IM node.exe -F
Run Code Online (Sandbox Code Playgroud)


Tha*_*han 6

它在 Windows 10 中运行良好

taskkill /f /im node.exe
Run Code Online (Sandbox Code Playgroud)


Nob*_*ody 5

如果您使用的是 Windows,请按照以下步骤操作:

  1. 打开任务管理器,找到这个进程: 显示 Node 进程的任务管理器 - Node.js 服务器端 JavaScript

  2. 然后只需右键单击并“结束任务”即可。

  3. 就是这样,现在所有 npm 命令都从开始运行。


Dar*_*iak 5

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

使用fkill终止占用您端口的进程:

fkill -f :8080
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢达柳斯。对于 2021 年遇到这个问题的人来说,它就是“npm i -g fkill-cli”。 (2认同)