如何在控制台closures时永久运行node.js应用程序?

我通过SSH连接到我的远程服务器。 然后我用Forever启动我的node.js应用程序。 一切工作正常,直到我closures我的控制台窗口。 如何在我的远程服务器上运行node.js应用程序FOREVER,即使我通过sshclosures了连接? 我只是想开始一个应用程序,并closures我的copmputer。 我的应用程序应该在远程服务器的后台工作。

你也可以考虑使用新贵的实用工具。 它将允许您像服务一样启动,停止和重新启动节点应用程序。 Upstart可以configuration为自动重启应用程序,如果它崩溃。

安装新贵:

 sudo apt-get install upstart 

为您的应用程序创build一个简单的脚本,如下所示:

 #!upstart description "my app" start on started mountall stop on shutdown # Automatically Respawn: respawn respawn limit 99 5 env NODE_ENV=production exec node /somepath/myapp/app.js >> /var/log/myapp.log 2>&1 

然后将脚本文件(myapp.conf)复制到/ etc / init中,并确保其标记为可执行文件。 然后可以使用以下命令来pipe理您的应用程序:

 sudo start myapp sudo stop myapp sudo restart myapp 

两个答案:一个用于Windows,一个用于* nix:

在Windows上,您可以使用start命令启动与您的cmd.exe实例断开连接的进程:

 start node example.js 

在* nix上,有两个方面:从控制台断开进程,并确保它不接收HUP信号(“挂断”),大多数进程(包括Node)将通过终止响应。 前者可能是可选的,但后者是必要的。

从控制台开始连接是很容易的:通常,只需在命令行末尾加一个“&”符号即可:

 # Keep reading, don't just grab this and use it node example.js & 

但是上述不保护HUP信号的过程。 根据名为huponexit的shell选项closuresshell(控制台)时,程序可能会收到或不收到HUP 。 如果huponexittrue ,当shell退出并且可能终止时,进程将收到HUP

huponexit在我使用的各种Linux变体上默认为false ,实际上我很高兴地使用了上面的这些年,直到coderjoe和其他人帮助我理解(在一个非常长的评论stream下可能已经被删除的答案),我依靠的是false

为了避免在您的环境中出现huponexit的可能性,请明确使用nohupnohup运行免于HUP信号的过程。 你这样使用它:

 nohup node example.js > /dev/null & 

要么

 nohup node example.js > your-desired-filename-or-stream-here & 

redirect很重要, 如果你不这样做,你最终会得到一个包含stdoutstderr输出的nohup.out文件。 (默认情况下, nohupstderrredirect到stdout ,如果stdout正在输出到terminal,则将其redirect到nohup.out也会redirectstdin如果从terminal接收到),所以我们不必这样做。 man nohupinfo coreutils 'nohup invocation'的细节。)

通常对于这些事情,你想使用一个进程监视器,以便如果进程崩溃的原因,监视器重新启动它,但上述情况适用于简单的情况。

总是,简单是最好的,不需要暴发户,不需要永远,只是nohup:

nohup node file.js &

相信我,我正在跑我的情况!

node expamle.js &例如

在Linux中,SSH进入你的远程服务器并运行

 screen 

启动到一个新的屏幕。

最后,键入ctrl d分离屏幕会话而不会终止进程。

更多信息在这里 。

这只是Windows的部分答案。 我创build了一个名为app.vbs的单行Visual Basic脚本,它将在隐藏窗口中启动您的节点应用程序:

 CreateObject("Wscript.Shell").Run "node app.js", 0 

要在启动时自动执行它,打开%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\目录并添加一个快捷方式到app.vbs文件。

更多信息: https : //keestalkstech.com/2016/07/start-nodejs-app-windowless-windows/

我有类似的问题,我认为永远使用将有助于处理坠毁和重新启动

你可以永远安装在全球范围内: sudo nom install -g forever

并运行这个命令:

 nohup forever server.js & 

这应该处理closuresterminal,closuresssh会话,节点崩溃和重新启动的所有麻烦。

如果您在生产环境中运行node.js,则应考虑使用PM2,forever.js或Nodemon。

在线比较不同​​包的文章不缺。