如何在控制台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
。 如果huponexit
是true
,当shell退出并且可能终止时,进程将收到HUP
。
huponexit
在我使用的各种Linux变体上默认为false
,实际上我很高兴地使用了上面的这些年,直到coderjoe和其他人帮助我理解(在一个非常长的评论stream下可能已经被删除的答案),我依靠的是false
。
为了避免在您的环境中出现huponexit
的可能性,请明确使用nohup
。 nohup
运行免于HUP
信号的过程。 你这样使用它:
nohup node example.js > /dev/null &
要么
nohup node example.js > your-desired-filename-or-stream-here &
redirect很重要, 如果你不这样做,你最终会得到一个包含stdout
和stderr
输出的nohup.out
文件。 (默认情况下, nohup
将stderr
redirect到stdout
,如果stdout
正在输出到terminal,则将其redirect到nohup.out
也会redirectstdin
如果从terminal接收到),所以我们不必这样做。 man nohup
或info 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。
在线比较不同包的文章不缺。