【问题标题】:Keep alive express process after close the terminal关闭终端后保持活跃的快速进程
【发布时间】:2014-12-21 11:38:16
【问题描述】:

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

$ node server.js &

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

$ npm start &

而且总是,在一个请求之后,进程就终止了。 是否有办法让流程保持活力? 我正在使用带有 Ubuntu 实例的 EC2。

【问题讨论】:

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


    【解决方案1】:

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

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

    我用过:

    $ nohup npm start &
    

    现在运行良好。

    【讨论】:

      【解决方案2】:

      使用场景

      在您的终端类型上:

      screen
      

      然后

      npm start
      

      然后通过按“Ctrl+a”紧跟“d”来分离会话

      在这里再次附加会话:Source

      它适用于 CentOS7

      【讨论】:

        【解决方案3】:

        我知道这是一个老问题,但对于认同它的新访问者,我会在这里冒昧地猜测您想要运行一个一直处于运行状态的网络应用程序:一种可以为访问者提供您的 IP 地址的服务,无论白天还是黑夜。如果不是这种情况,那么screennohup 可以正常工作,但如果是这种情况,最好使用像pm2forever 这样的守护进程。

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

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

        【讨论】:

        • 谢谢,我也将此脚本添加到 package.json 中:"server": "pm2 start npm --name \"app_name\" -- start"
        【解决方案4】:

        您也可以使用 child_process.fork。

        【讨论】:

          猜你喜欢
          • 2022-12-22
          • 2020-08-16
          • 2019-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多