关闭终端后保持快速进程

时间:2014-10-25 23:01:12

标签: node.js bash ubuntu express amazon-ec2

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

$ node server.js &

我知道,有可能完成SSH连接并关闭控制台。 但是通过快递,我开始了我的过程:

$ npm start &

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

4 个答案:

答案 0 :(得分:11)

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

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

我用过:

$ nohup npm start &

现在工作得很好。

答案 1 :(得分:2)

我知道这是一个老问题,但是对于识别出这个问题的新访客,我将在这里大步走出去,猜测您想运行一个一直在运行的Web应用程序:可以为访问者提供昼夜IP地址的服务。如果不是这种情况,那么screennohup可以正常工作,但如果是这样,最好的做法是使用pm2forever之类的守护程序

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

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

答案 2 :(得分:0)

使用场景

在您的终端上输入:

$ docker run --rm $CONTAINER_IMAGE:test rails db:migrate RAILS_ENV=test && bundle exec rails test
== 20181005152311 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0014s
== 20181005152311 CreateUsers: migrated (0.0014s) =============================

/bin/sh: eval: line 86: rails: not found
ERROR: Job failed: exit code 127

然后

screen

并通过立即按“ Ctrl + a”和“ d”

断开会话

此处再次附加会议:Source

它适用于CentOS7

答案 3 :(得分:0)

您也可以使用child_process.fork。