首页 > 解决方案 > 在 Google VM 上运行两台服务器

问题描述

我已经设法让我的 python 服务器在 Google 的 VM 上启动并运行。

但是,是否可以在同一实例上运行另一台服务器?

我的第一台服务器在特定端口上运行。从理论上讲,系统上的另一台服务器在不同的端口上运行是没有限制的。我可以在我的“真实”电脑上使用两个不同的终端实例来执行此操作。

但是,我使用 Google VM 获得的终端是单一的。因此,当我运行 python 服务器时,我的终端被占用了。那么是否可以启动另一个终端会话以启动另一个服务器?

编辑:我无法将进程发送到后台。这是作业的输出:

$ jobs
[1]-  Stopped                 sudo docker run -p 5001:5001 -it -v $(pwd):/mnt/translation -w="/mnt/translation" -e 
"TERM=xterm-color" f_translate
[2]+  Stopped                 sudo docker run -p 5001:5001 -it -v $(pwd):/mnt/translation -w="/mnt/translation" -e 
"TERM=xterm-color" f_translate`enter code here`

当我尝试正常运行命令时(它失败并且它没有进入 docker 容器):

$ sudo docker run -p 5001:5001 -it -v $(pwd):/mnt/translation -w=
"/mnt/translation" -e "TERM=xterm-color" f_translate &
[3] 23072
$ ERRO[0001] error waiting for container: context canceled 

标签: linux

解决方案


我将假设您正在运行 Linux VM。在这种情况下,这不是 GCP 特定的问题,而是一般的 Linux。

有几种方法可以实现您想要的:

  1. &使用和运行命令disown&在后台运行命令,并disown防止它在您断开会话时停止
<command> &
disown
  1. 使用 运行命令nohupnohup绕过 HUP 信号(信号挂断),即使在终端关闭时也可以在后台运行命令。
nohup <command> &
  1. 把它变成一种服务
  2. 使用终端多路复用器

编辑

容器是完全不同的野兽,我强烈建议您阅读文档
您正在尝试启动一个容器并附加到它-it 在后台启动它。虽然这会起作用,但这不是正确的方法。要在后台启动容器,您应该使用以下选项
以分离模式运行它:-d

sudo docker run -d -p 5001:5001 -v $(pwd):/mnt/translation -w="/mnt/translation" -e "TERM=xterm-color" f_translate

-d之后注意run,没有-it选项

然后,如果需要,可以使用

docker exec -it <container-name> /bin/bash

并用Ctrl+分离c


推荐阅读