如何停止 Node.js 服务器?

4

我刚在我的DigitalOcean服务器上安装了MEAN堆栈。测试应用程序可以成功运行,但是现在当我从DigitalOcean打开命令行时,它只显示信息:GET /modules/etc…,而我输入的部分是空白的。我该如何停止服务器并将其恢复到最初状态,以便我可以访问文件夹等内容?

简单地使用CTRL+C无法停止服务器运行,这正是我需要做的。


1
可能是Stop node.js program from command line的重复问题。 - XCS
你有SSH访问权限吗?如果有,你可以找到进程ID并将其终止。 - Sulthan Allaudeen
7个回答

12

起初:按下CTRL+Z将会终止执行。稍后,为了终止PID(进程ID),请遵循以下步骤。

通用的方法来杀死任何包括本地服务器在内的进程ID:

参考:https://dev59.com/QWkv5IYBdhLWcg3wiRao#57536823

对于此情况:

$:lsof -i tcp:<PORT>

它将显示与端口关联的PID(processId):

$:kill -9 <process-id>

再次提醒,您可以运行服务器。


真是一大堆额外的维护工作。为什么Node没有像其他HTTP服务器一样拥有一个启动/停止脚本,这超出了我的想象。这么多关于并发性的问题。 - Vijay Kumar Kanta

4

您可以通过结束进程来停止服务器。在Windows中,运行CMD并输入taskkill /F /IM node.exe,这将杀死(停止)所有Node.js进程。然后您可以重新启动它。


1
请注意,您的命令将终止所有节点进程,这可能有些过度。 - Luke

1

通过命令行或BASH脚本编程地终止程序(例如nodehttp-server)。

[victoria@victoria ~]$ pgrep -a node     ## pgrep --help
  1315229 node /usr/bin/http-server -p 8080 /mnt/Vancouver/

[victoria@victoria ~]$ pgrep -l -f node
  1315229 node

[victoria@victoria ~]$ pgrep -l -f http-server
  1315229 node

[victoria@victoria ~]$ pgrep -f http-server
  1336598

[victoria@victoria ~]$ a=$(pgrep -f node)    ## or: a=$(pgrep -f http-server)

[victoria@victoria ~]$ echo $a
  1315229

[victoria@victoria ~]$ kill -9 $a

[victoria@victoria ~]$ pgrep -a node
[victoria@victoria ~]$

## one-liner:  a=$(pgrep -f node); kill -9 $a

0

好的,你可以在“输出”控制台上简单地停止它:只需右键单击并选择“停止代码运行”选项。

enter image description here


0

只需打开任务管理器。 在进程中搜索node.js进程。 然后结束该进程并尝试,它将正常工作。


从命令行打开任务管理器并不是一个解决方案,如果他正在使用Linux系统并通过SSH访问它。 - Acebee

0

只有在使用操作系统Windows并且在代码中使用“:”时,才应该使用CTRL+C。

app.close();

如果你有这样的代码

let app = require('express'); // or any frameworks 

0
你在用什麼?你試過在命令提示符或終端中使用控制+C嗎?
編輯:轉到您的config.js文件或服務器文件,指定您想要使用的端口。如果您正在本地主機上進行測試,請在瀏覽器中輸入localhost: 端口。
var http = require('http'); 
var url = require('url'); 
http.createServer(function (req, res) { 
 console.log("Request: " + req.method + " to " + req.url); 
 res.writeHead(200, "OK"); 
 res.write("<h1>Hello</h1>Node.js is working"); 
 res.end(); 
}).listen(8080); 
console.log("Ready on port 8080");

那个方法可行,但现在我该如何停止服务器运行,以便端口可以被其他应用程序使用? - Alanay
在你的 config.js 文件中,你需要更改端口。 - user2353565

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接