关闭控制台后如何永久运行node.js应用程序?

我通过SSH连接到远程服务器。 然后,我使用Forever启动我的node.js应用程序。 一切正常,直到我关闭控制台窗口。 即使通过ssh关闭连接,如何在我的远程服务器上永远运行node.js应用程序? 我只想启动一个应用程序,然后关闭计算机。 我的应用程序应在远程服务器的后台运行。

Pono asked 2020-01-05T22:55:24Z

10个解决方案

57 votes

您可能还需要考虑使用upstart实用程序。 它将允许您像服务一样启动,停止和重新启动节点应用程序。 可以将Upstart配置为在崩溃时自动重新启动应用程序。

安装新贵:

sudo apt-get install upstart

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

#!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,并确保将其标记为可执行文件。 然后可以使用以下命令来管理您的应用程序:

sudo start myapp

sudo stop myapp

sudo restart myapp

Derrish Repchick answered 2020-01-05T22:55:46Z

29 votes

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

在Windows上,可以使用nohup.out命令启动与stdout实例断开连接的过程:

start node example.js

在* nix上,这有两个方面:断开进程与控制台的连接,并确保它没有收到nohup.out信号(“挂断”),大多数进程(包括Node)将通过终止来响应。 前者可能是可选的,但后者是必需的。

从控制台断开连接很容易:通常,您只需在命令行的末尾放置一个&符号(nohup.out):

# Keep reading, don't just grab this and use it

node example.js &

但是以上内容不能保护该过程免受nohup.out信号的影响。 当关闭外壳程序(控制台)时,程序可能会收到stdout,也可能不会收到stdout,具体取决于称为stderr的外壳程序选项。如果nohup是HUP,则该进程将在外壳程序退出时收到HUP,并且可能会终止。

在我使用的各种Linux变体上,nohup.out默认为stdout,实际上我很开心地使用了多年,直到coderjoe和其他人帮助我理解了(在很长的评论流中,可能被删除了)。 依靠stderr是nohup。

为避免环境中nohup.out可能是stdout的可能性,请明确使用stderr。nohup运行不受HUP信号影响的进程。 您可以这样使用它:

nohup node example.js > /dev/null &

要么

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

重定向很重要; 如果不执行此操作,最终将得到一个nohup.out文件,其中包含stdout和stderr的输出。(默认情况下,nohup将nohup重定向到nohup,如果stdout正在输出到终端,则将其重定向到2689845102578972)。 如果nohup是从终端接收的,则nohup还会重定向stdin,因此我们不必这样做。有关详细信息,请参阅man nohup或info coreutils 'nohup invocation'。)

通常,对于这些事情,您希望使用进程监视器,以便如果进程由于某种原因而崩溃,监视器将重新启动它,但是上述方法在简单情况下仍然有效。

T.J. Crowder answered 2020-01-05T22:56:49Z

19 votes

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

nohup node file.js &

相信我,我正在跑步,这样我就可以了!

tquang answered 2020-01-05T22:57:18Z

12 votes

我一定会推荐pm2

npm install -g pm2

要启动服务器:pm2 start [yourServerFile.js]

停止服务器:pm2 stop [yourServerFile.js]

关闭客户端,服务器将永远运行。...如果应用崩溃,也将重新启动。

我已经在Ubuntu上运行节点服务器几个月了,零问题

james murphy answered 2020-01-05T22:58:00Z

7 votes

您可以像这样使用npm永久安装:

sudo npm install -g forever

或作为服务:

forever start server.js

或停止服务

forever stop server.js

列出所有正在运行的进程:

forever list

sudhir answered 2020-01-05T22:58:32Z

3 votes

例如node expamle.js &

Emmerman answered 2020-01-05T22:58:52Z

3 votes

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

screen

启动到新屏幕。

最后,键入ctrlad可以在不终止进程的情况下分离屏幕会话。

更多信息在这里。

ckirksey3 answered 2020-01-05T22:59:25Z

1 votes

对于Windows,这只是部分答案。 我创建了一个单行的Visual Basic脚本%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\,它将在一个隐藏的窗口中启动您的节点应用程序:

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/]

Kees C. Bakker answered 2020-01-05T22:59:54Z

1 votes

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

您可以在全球永久安装:sudo nom install -g forever

并运行以下命令:

nohup forever server.js &

这应该处理关闭终端,关闭ssh会话,节点崩溃并重新启动的所有麻烦。

Pini Cheyni answered 2020-01-05T23:00:27Z

1 votes

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

在线比较不同包装的文章并不乏。

Owen Brown answered 2020-01-05T23:00:51Z

服务器怎么关闭终端依然运行node,关闭控制台后如何永久运行node.js应用程序?...相关推荐

  1. ride.py在运行python3.×版本后导致无法运行及解决办法

    最近一直在自学python自动化,网上看到rf框架挺适合初学自动化测试,于是通过虫师的搭建了rf框架, 但是在使用过程中遇到了一个问题,在网上没有找到明确解决办法于是想到记录一下 之前为了搭建rf框架 ...

  2. macOS下载、安装、使用tomcat服务器及IntelliJ IDEA for Mac 如何集成、配置、运行tomcat

    文章目录 web 服务器软件 tomcat 如何下载安装 tomcat macOS 下如何启动 tomcat Windows 启动 tomcat 部署项目的方式 直接将项目放到 webapps 目录下 ...

  3. ssh中exit命令退出远程服务器_解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止...

    问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问. 解决方法:使用nohup命令让 ...

  4. 服务器训练数据 关闭终端,一文明白使用nohup将服务器训练程序后台运行不关闭+随时通过查看训练情况输出与visdom可视化...

    使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化 使用服务器进行远程训练 由于笔者经常需要使用服务器进行训练,且有些模型训练起来需要很长的时间,如Mask模型,故经常需要长期跑程序 ...

  5. Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 Linux在后台运行python程序.脚本程序.可执行程序等,关闭终端仍可保持程序运行 文章目录: 1 为什么需要后台运 ...

  6. 宝塔面板使用nohup后台运行任务失败,关闭终端后任务自动终止。

    项目场景: 项目场景:在宝塔终端执行命令nohup node ../wangyi/app.js > wangyi1.log 2>&1 &后,当前任务成功执行,也能通过公网访 ...

  7. 解决Linux关闭终端(关闭SSH等)后运行的程序自动停止

    CSDN GitHub 解决Linux关闭终端(关闭SSH等)后运行的程序自动停止 AderXCoding/system/tools/ssh_exit 本作品采用知识共享署名-非商业性使用-相同方式共 ...

  8. npm run dev关闭终端后如何停止?退出vscode不行, 杀掉进程node.exe就行  Port 3030 is already in use [nodemon] app crashed

    Port 3030 is already in use [nodemon] app crashed - waiting for file changes before starting... npm ...

  9. Linux下关闭终端之后继续运行相应的进程

    1.后台运行 Linux下一般想让某个程序在后台运行,很多都是使用& 在程序结尾来让程序自动运行.比如我们要运行tesh.sh在后台: ./tesh.sh & 一般这种程序使用& ...

  10. deepin 服务器_深度终端

    概述 深度终端是深度科技精心打造的一款终端模拟器.它拥有简单的界面,丰富而强大的功能.您可以瞬间启动和关闭,使用起来像普通文件窗口一样流畅,让您在输入命令时心无旁骛,得心应手.试试雷神模式,一边看页面 ...

最新文章

  1. pg数据库生成随机时间_postgresql 时区与时间函数-阿里云开发者社区
  2. mysql pmm进程_mysql性能监控软件pmm
  3. c语言fsetpos是什么,fsetpos - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  4. 居然之家:核心业务系统全面上云,采用PolarDB替代传统商业数据库
  5. Toad for Oracle 导入MIP.dmp文件时:报内存不足时的解决办法:
  6. 作者:赵晨(1980-),男,深圳般若计算机系统股份有限公司气象大数据应用负责人...
  7. 马化腾王健林一起逛街 买了一杯茉莉茶却忘了拿走
  8. wordpress functions.php 在哪,实用WordPress functions.php代码收藏 – 来自WordPress Answers
  9. 五道口服装市场关闭前 职业“甩货人”赚一笔
  10. 宝元系统通讯软件recon_企业即时通讯工具需注意哪些问题
  11. python爬虫怎么写多线程_Python爬虫4.1 — threading(多线程)用法教程
  12. 谷歌seo外链发布50+个网站平台分享(e6zzseo)
  13. 计算机专业顶级期刊,计算机领域顶级期刊
  14. 微信小程序-- WXS 脚本语言公测
  15. Opencv图像处理之平滑(Smoothing)模糊(Blurring)操作
  16. 流文件和媒体文件的不一样( flv和mp4,avi的区别)
  17. 硬件电路常用设计摘要
  18. Verilog HDL 基础
  19. go每日新闻--2020-12-23
  20. 日本Java18_死磕18个Java8日期处理,工作必用!

热门文章

  1. js动态显示时间和日期
  2. php有意思的小程序,这应该是迄今为止最全的小程序Top 100 榜单了,php中文网诚意奉上...
  3. 权力的游戏登录显示服务器上限,权力与纷争登录不上怎么办 登录不上解决方案...
  4. go语言mysql框架_开源轻量级数据库访问框架-Go语言中文社区
  5. 关于中职计算机专业,关于中职学校计算机专业改革探讨
  6. brpc访问MySQL_怎么使用Swoft 搭建微服务(TCP RPC)PHP中高级进阶
  7. 库ppt演示 python_用Python实现PPT转化图片
  8. 计算机房采用c02采灭火,[灭火器使用.doc
  9. 机器学习- 吴恩达Andrew Ng Week7 知识总结Support Vector Machines
  10. 命令查询职责分离模式 CQRS Command Query Responsibility Segregation