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

我已经安装并在osx上运行node.js服务器。 我已经失去了一个聊天模块,并愉快地运行它。 我改变了一些片断,需要重新启动服务器才能看到效果。

我只知道如何通过closuresterminal窗口来重新启动,然后再次运行节点chatdemo.js。

任何方式重新启动而不closuresterminal?

谢谢。

如果它只是运行(不是守护进程),那么只需使用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 

其中PIDps输出中的数字代替。

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

npm install nodemon -g

nodemon [你的应用名称]

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

检查nodemon的 git回购: https : //github.com/remy/nodemon

在这种情况下,您经常会重新启动node.js服务器,因为它处于活动状态,并且正在进行更改。 有一个很好的热重载脚本,可以通过监视所有的.js文件来处理这个问题,如果这些文件中的任何一个发生了变化的话,重启你的node.js服务器。 只是快速开发和testing的票。

关于如何使用它的脚本和解释在这里在德拉科蓝 。

我有同样的问题,然后编写这个杀死所有现有节点进程的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" 

在将其保存为shell脚本(xxx.sh)文件后,您可能需要将其添加到PATH中,如此处所述。

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

使用“kill -9 [PID]”或“killall -9 node”为我工作,其中“kill -2 [PID]”不起作用。

如果我只是从控制台运行节点应用程序(不使用永远等)我使用控制+ C,不知道如果OSX有相同的组合键终止,但比find进程ID和杀死它快得多,你也可以添加将代码添加到您正在使用的聊天应用程序中,然后在控制台中input“exit”以closures应用程序。

 process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function(data) { if (data == 'exit\n') process.exit(); }); 

我明白我的意见与Windows相关,但可能是有用的。 在cmd中运行win:

 wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate 

那么你可以再次运行你的应用程序:

 node my_app.js 

您也可以在batch file中使用它,并使用换码引号:

 wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate node my_app.js 

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

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

 pkill -HUP node