ubuntu - Google Cloud VM 中的后台进程在一段时间后终止

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

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

nohup node server.js > out.log &
我关闭了 ssh 连接,它运行了一段时间,然后应用程序终止。我检查了日志,没有错误。在此期间,我什至没有向服务器请求任何内容。我还检查了谷歌云控制台中的实例指标,CPU 利用率始终低于 10%。我在我的电脑上测试过,这个问题没有发生。
enter image description here
为什么我的应用程序在云中终止?

最佳答案

正如@John Hanley Nohup 所提到的,这不是在后台运行进程的可靠方法。尽管这是在后台运行进程的常用方法,但它不能让您很好地控制进程。您无法轻松停止或重新启动该过程。 nohup 的问题在于,如果您不将输出发送到 >/dev/null 2>&1,那么它将保持输出进程打开。所以如果你关闭终端,你也会关闭输出进程。
您可以使用 而不是使用 nohop系统服务运行后台进程。与 nohop 相比,Systemd 是一项更强大的服务。大多数 Linux 系统都有 systemd 允许您定义和管理服务。您可以使用 systemctl 命令轻松启动、停止或重新启动脚本。引用How to Run NodeJS App in Background中的方法#3信息。
您也可以使用 屏幕保持 SSH session 运行的命令,如果它是交互式的,则允许您重新连接到该进程。 Screen 是一个用于 Linux 的文本窗口管理器,它允许用户同时管理多个终端 session 、在 session 之间切换、为屏幕上正在运行的 session 记录 session ,甚至可以在我们需要的任何时间恢复 session ,而不必担心 session 被记录出或终端被关闭。如果您希望许多进程在后台运行,这可能会更麻烦,但如果这只是一个,那就很容易了。
安装屏幕: sudo apt install screen,使用 screen 运行它并将其视为另一个屏幕,运行您想要的任何内容,然后只需按 ctrl + a d 你将回到“原始”外壳。如果要恢复屏幕 session ,请键入 screen -r。引用 How to use Linux screen信息。
引用 How To Run Node JS Server In BackgroundHow to keep processes running after ending ssh session信息。

关于ubuntu - Google Cloud VM 中的后台进程在一段时间后终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69859737/

相关文章:

c - 为 __m256i 分配内存

mysql - GTID 一致性 : CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context

python - 在Python子进程中使用 '&'作为后台进程

ios - 设备锁定时 NSURLConnection 应用程序崩溃

python - 使用 scipy.sparse.csc_matrix.toarray() 将稀疏矩阵转换为数组时出错

python - 如何在安装了多个版本的 python 的同时在当前版本的 python 中安装 pyaudio 模块?

linux - 远程桌面 Azure Linux VM

google-cloud-platform - GCP - GPU 暂存时间减少

visual-studio-code - 通过 ssh 将 vscode 连接到 gcp cloud shell

c++ - 在 C++ 中执行主程序时,如何在后台检查是否已经过了一分钟?