关闭终端后保持快速进程

MrM*_*ins 8 bash ubuntu amazon-ec2 node.js express

关闭终端后,我正试图保持一个进程.是一个带有express的node.js项目.基本上,对于其他进程,我保持活动进程:

$ node server.js &
Run Code Online (Sandbox Code Playgroud)

我用它,可能完成SSH连接并关闭控制台.但是通过快递,我开始了我的流程:

$ npm start &
Run Code Online (Sandbox Code Playgroud)

并且,在一次请求之后,该过程总是死亡.是否存在保持流程存活的方法?我正在使用带有Ubuntu实例的EC2.

MrM*_*ins 11

我找到了答案 https://unix.stackexchange.com/questions/89483/keeping-a-process-running-after-putty-or-terminal-has-been-closed

基本上,您可以使用nohup进程.(从命令提示符退出后执行命令).

我用过:

$ nohup npm start &
Run Code Online (Sandbox Code Playgroud)

现在工作得很好.

  • 也可以使用:屏幕和[forever](https://github.com/nodejitsu/forever) (2认同)

Bor*_*try 8

使用场景

\n\n

在您的终端上输入:

\n\n
screen\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后

\n\n
npm start\n
Run Code Online (Sandbox Code Playgroud)\n\n

并通过按\xe2\x80\x9cCtrl+a\xe2\x80\x9d 立即按 \xe2\x80\x9cd\xe2\x80\x9d 来分离会话

\n\n

这里再次附上会话:来源

\n\n

它适用于 CentOS7

\n


JCo*_*ier 5

我知道这是一个老问题,但是对于认同它的新访问者来说,我将在这里大胆猜测您想要运行一个一直运行的网络应用程序:一个可以不分昼夜地为访问者提供您的 IP 地址。如果不是这种情况,则screenornohup可以正常工作,但如果是这种情况,最佳做法是使用像pm2永远这样的守护程序。

守护进程可以说是保持服务始终运行的最佳方式……例如,您的 Ubuntu 实例如何知道您何时想通过 SSH 与之通信?这是由于 SSH 守护进程 sshd。守护进程具有始终在侦听的代码,就像您希望网络应用程序一样。

此外,pm2永远还有其他一些不错的功能,例如如果您的计算机碰巧崩溃并重新启动,则再次启动守护程序。