如何重新启动node.js服务器

jsn*_*oob 71 macos node.js

我在osx上安装并运行了一个node.js服务器.我已经开始使用聊天模块,很高兴能够运行它.我已经改变了一些部分,需要重启服务器以查看效果.

我只知道如何通过关闭终端窗口然后重新启动它然后再次运行节点chatdemo.js来重新启动.

有没有关闭终端重启的方法?

谢谢.

rfu*_*duk 92

如果它只是运行(不是守护进程),那么只需使用Ctrl-C.

如果它被守护,那么你可以尝试:

$ ps aux | grep node
you   PID  1.5  0.2  44172  8260 pts/2    S    15:25   0:00 node app.js
$ kill -2 PID
Run Code Online (Sandbox Code Playgroud)

哪里PID被输出中的数字所取代ps.

  • 您也可以使用"killall -2 node",它具有相同的效果. (8认同)
  • 注意:通过`nohup node server.js&`启动节点守护进程 (7认同)
  • 不希望/需要杀死_all_节点进程.如果我有一些节点repl打开我会在那之后成为一个不快乐的露营者:) (2认同)

Nik*_*hnu 47

在开发期间,重新启动服务器以查看所做更改的最佳方法是使用 nodemon

npm install nodemon -g

nodemon [您的应用名称]

nodemon将监视nodemon启动的目录中的文件,如果它们发生更改,它将自动重新启动节点应用程序.

检查nodemon git repo:https://github.com/remy/nodemon


Pau*_*son 16

在这种情况下,您经常重新启动node.js服务器,因为它处于活动开发状态并且您一直在进行更改.有一个很棒的热重载脚本,可以通过观察所有.js文件并重新启动node.js服务器(如果这些文件中的任何一个已更改)来为您处理此问题.只是快速开发和测试的门票.

关于如何使用它的脚本和说明在Draco Blue.

  • 仅供参考,现在有几个节点模块专用于此,请参阅[节点模块Wiki页面](https://github.com/joyent/node/wiki/modules#wiki-build-and-deployment). (5认同)

Cro*_*ile 14

我遇到了同样的问题,然后写了这个shell脚本,它杀死了所有现有的节点进程:

#!/bin/bash
echo "The following node processes were found:"
ps aux | grep " node " | grep -v grep
nodepids=$(ps aux | grep " node " | grep -v grep | cut -c10-15)

echo "OK, so we will stop these process/es now..."

for nodepid in ${nodepids[@]}
do
echo "Stopping PID :"$nodepid
kill -9 $nodepid
done
echo "Done"
Run Code Online (Sandbox Code Playgroud)

在此之后被保存为一个shell脚本(xxx.sh)文件你可能想描述将它添加到您的PATH 这里.

(请注意,除了grep自己的名字之外,这会杀死所有名称为"node"的进程,所以我猜在某些情况下它也可能会杀死一些名字相似的其他进程)

  • 我在mac osx上我不得不使用`cut -c17-20` (2认同)
  • 这不正是“pkill node”的用途吗? (2认同)

spa*_*ted 7

说“nodemon”会回答这个问题。

但是关于如何只杀死(所有)节点恶魔,以下对我有用:

pkill -HUP node
Run Code Online (Sandbox Code Playgroud)


dim*_*aqw 6

我知道我的评论与 Windows 相关,但可能有人有用。对于在 cmd 中运行的 win:

wmic process  where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate
Run Code Online (Sandbox Code Playgroud)

然后你可以再次运行你的应用程序:

node my_app.js
Run Code Online (Sandbox Code Playgroud)

您也可以在批处理文件中使用它,并带有转义引号:

wmic process  where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate
node my_app.js
Run Code Online (Sandbox Code Playgroud)