首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >停止node.js服务器的所有实例

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

Stack Overflow用户
提问于 2013-02-10 03:55:02
回答 12查看 483K关注 0票数 244

这是我第一次使用Node.js,我遇到了这个问题:

我已经通过IDE的插件启动了Node服务器。不幸的是,我不能使用IDE的终端。因此,我尝试从命令行运行脚本。

这就是问题所在--我使用的是Express模块,而我的应用程序正在侦听某个端口(8080)。当我从命令行启动应用程序时,它抛出以下错误:

代码语言:javascript
复制
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)

尽管我不太确定这个错误可能是什么,但我认为这是因为应用程序正在侦听一个已经在使用的端口。所以我就这么做了:

代码语言:javascript
复制
netstat -an

我看得出来

代码语言:javascript
复制
TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

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

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

EN

回答 12

Stack Overflow用户

发布于 2015-10-01 20:15:17

适用于Linux、OS X

代码语言:javascript
复制
killall node
票数 94
EN

Stack Overflow用户

发布于 2013-02-10 04:07:29

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

遗憾的是,这些标志似乎因系统不同而有所不同,但在Mac上可以运行

代码语言:javascript
复制
lsof -Pi | grep LISTEN

例如,在我的机器上,我得到如下内容:

代码语言:javascript
复制
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以极端偏见终止。

票数 53
EN

Stack Overflow用户

发布于 2018-06-03 14:38:10

如果您想终止某个特定的节点进程,可以转到命令行路由并输入:

代码语言:javascript
复制
ps aux | grep node

获取所有节点进程ids的列表。现在,您可以获取进程id(pid),然后执行以下操作:

代码语言:javascript
复制
kill -9 PID

如果你想杀死所有的节点进程,那就这样做:

代码语言:javascript
复制
killall -9 node

开关类似于-9 \f25 windows -9\f6上的结束任务。它将强制该过程结束。您可以执行以下操作:

代码语言:javascript
复制
kill -l

查看kill命令的所有开关及其注释。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14790910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档