【问题标题】:How to maintain command after exiting SSH?退出SSH后如何维护命令?
【发布时间】:2018-08-25 18:48:19
【问题描述】:

我正在使用 PuTTy 在共享主机 (cPanel) 上运行 node.js 服务器。我的问题是,即使在我完全关闭 PuTTy 之后,是否可以保持命令?我的问题是,例如,当我输入“nohup node server.js &”并且我的服务器成功运行时,在我关闭 PuTTy 的那一刻,我的节点服务器再次关闭。如果有办法让我的节点服务器即使在完全退出 PuTTy 甚至关闭我的计算机之后也能持续运行,我会很高兴的。

我尝试了以下方法:
- nohup(如上所示),但是在我关闭 PuTTy 后它不会保持连接。
- forever.js 但仍然与 nohup 相同。

感谢我能得到的所有帮助。

编辑: 澄清一下,我的问题不是我希望进程在后台运行。我的问题是即使在我的计算机关闭时也可以运行该过程。即使我正在使用托管,我也必须保持我的电脑开机才能继续服务器进程,这似乎很奇怪。

【问题讨论】:

    标签: node.js angular ssh cpanel putty


    【解决方案1】:

    即使您关闭了 putty 终端,也有多种方法可以让命令在后台运行。

    • 一个非常简单的方法是在命令末尾加上“&”,如下所示

      节点服务器.js &

    • 第二种方法是使用pm2。这是运行 NodeJS 服务器的非常有效的方式。它不仅在关闭终端后保持会话,而且如果您的操作系统重新启动,它将自动重新启动服务器,无需用户交互来运行命令。

      你可以通过以下命令安装pm2

      npm install pm2 -g

      然后启动节点服务器为

      pm2 启动 server.js

    如果这对您有用,请更新。

    【讨论】:

    • 您好,感谢您的回答!我尝试在末尾添加“&”,但我的问题不是我希望该进程在后台运行。我的问题是即使在我的计算机关闭时也可以运行该过程。即使我正在使用托管,我也必须保持我的电脑开机才能继续服务器进程,这似乎很奇怪。
    • 我假设您想在远程服务器上运行该命令。您正在通过 putty 从本地系统运行命令。因此,当您使用 pm2 运行命令时,即使您关闭 putty 并关闭本地系统,进程也会继续运行。
    • 啊,好吧,我会试试pm2,稍后再更新你。感谢您的建议:-)
    • 您好,我刚刚安装了 pm2 并使用 'pm2 start server.js' 运行它,但问题仍然存在。当我关闭 SSH (PuTTy) 以关闭我的电脑时,节点服务器也停止运行。知道如何解决这个问题吗?请记住,我想要一个选项,即使在我关闭 SSH 和我的电脑之后节点服务器仍然在共享主机上运行。
    • 您可以选择通过托管服务提供商提供的屏幕连接到服务器吗?
    【解决方案2】:

    如果服务器上可用,您可以使用screen。

    【讨论】:

      【解决方案3】:

      如果需要运行关闭终端后不会终止的进程,您可能正在寻找nohup 或disown:

      $ nohup your command &
      $ exit
      

      或者使用disown:

      $ your command &
      $ disown
      $ exit
      

      如果你有多个命令:

      $ sleep 3600 &
      $ sleep 86400 &
      

      通过键入作业,会出现如下内容:

      [1]  - running    sleep 3600
      [2]  + running    sleep 86400
      

      我们只说工作 2:

      $ disown %2
      

      如果你的进程已经在运行,你可以暂停ctrl+z,会出现类似这样的信息:

      $ sleep 3600
      ^Z
      zsh: suspended  sleep 3600
      

      然后键入 bg 将其置于后台:

      $ bg
      [1]  + continued  sleep 3600
      

      之后你可以不承认并退出:

      $ disown
      $ exit
      

      【讨论】:

      • 您好,正如我在帖子中提到的,我尝试过 nohup。在我关闭电脑的那一刻,我的节点服务器也停止运行。 disown 也是如此。
      • @SquishyAura 那么你可能想要使用主管,例如immortal.run
      【解决方案4】:

      发现问题出在 cPanel 上,因为它不支持 node.js。我搬到了 DigitalOcean,它在那里工作得非常好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-15
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        相关资源
        最近更新 更多