【问题标题】:Background process terminates after a while in Google Cloud VMGoogle Cloud VM 中的后台进程在一段时间后终止
【发布时间】:2021-11-06 14:37:33
【问题描述】:

我正在使用命令在 google cloud VM(使用 Ubuntu 20.04 的 e2 介质)中运行我的应用程序

nohup node server.js > out.log &

我关闭了 ssh 连接,它运行了一段时间,然后应用程序终止。我检查了日志,没有错误。在此期间,我什至没有向服务器请求任何内容。我还检查了谷歌云控制台中的实例指标,CPU 利用率始终低于 10%。我在我的电脑上测试过,没有出现这个问题。

为什么我的应用程序在云中终止?

【问题讨论】:

标签: ubuntu google-cloud-platform background-process nohup


【解决方案1】:
Google Cloud推荐的答案

正如@John Hanley Nohup 所述,在后台运行进程不是一种可靠的方法。尽管这是在后台运行进程的常用方法,但它不能让您很好地控制进程。您无法轻松停止或重新启动该过程。 nohup 的问题在于,如果您不将输出发送到 > /dev/null 2>&1,那么它将保持输出进程打开。所以如果你关闭终端,你也会关闭输出进程。

您可以使用 systemd 服务 来运行后台进程,而不是使用 nohop。与 nohop 相比,Systemd 是一项更强大的服务。大多数 Linux 系统都有 systemd 允许您定义和管理服务。您可以使用 systemctl 命令轻松启动、停止或重新启动脚本。请参阅How to Run NodeJS App in Background 中的方法 #3 以获取信息。

您还可以使用 Screen 命令保持 SSH 会话运行,如果它是交互式的,则允许您重新连接到该进程。 Screen 是一个用于 Linux 的文本窗口管理器,它允许用户同时管理多个终端会话、在会话之间切换、为屏幕上正在运行的会话记录会话,甚至可以在我们需要的任何时间恢复会话,而不必担心会话被记录出或终端被关闭。如果您希望在后台运行多个进程,这可能会更麻烦,但如果这只是一个,那就很容易了。

安装屏幕: sudo apt install screen,用 screen 运行它并将其视为另一个屏幕,运行任何你想要的然后只需按 ctrl + a d 即可回到“原始”外壳。如果要恢复屏幕会话,请键入 screen -r。参考How to use Linux screen获取信息。

有关信息,请参阅 How To Run Node JS Server In BackgroundHow to keep processes running after ending ssh session

【讨论】:

  • 很好的答案。
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多