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

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

我已经通过IDE的插件启动了一个Node服务器。 不幸的是,我不能使用IDE的terminal。 所以我试图从命令行运行脚本。

这是问题 – 我正在使用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服务器时,Node服务器已经启动。

所以我想知道,我怎样才能停止所有的服务器实例? 另外如果你可以告诉我如何检测端口上运行的内容并杀死它。

Windows机器:

需要杀死一个Node.js服务器,并且没有任何其他的Node进程在运行,你可以告诉你的机器node.exe所有名为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机器:

这个过程几乎是一样的。 您可以杀死机器上运行的所有节点进程(如果SIGKILL不足,使用-$SIGNAL ):

 killall node 

或者也可以使用netstat ,您可以find侦听端口的进程的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获取绑定到所需端口的进程。

不幸的是,标志似乎有所不同,取决于系统,但在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)”之前的右侧。 findstream氓PID并kill -9 $PID以极端偏见终止。

你可以试试这个:

 taskkill /IM node.exe -F 

Windows里面的GitBashterminal/ Webstormterminal我需要使用这个解决scheme。

 cmd "/C TASKKILL /IM node.exe /F" 

你也可以尝试:

killall nodejs

上午使用Windows操作系统。

我杀了所有的节点进程,并重新启动了它的工作。

尝试

 taskkill /im node.exe