linux - 在 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 VM。在这种情况下,这不是 GCP 特定的问题,而是一般的 Linux。
有几种方法可以实现您想要的:
&
使用和运行命令disown
。&
在后台运行命令,并disown
防止它在您断开会话时停止
<command> &
disown
- 使用 运行命令
nohup
。nohup
绕过 HUP 信号(信号挂断),即使在终端关闭时也可以在后台运行命令。
nohup <command> &
编辑
容器是完全不同的野兽,我强烈建议您阅读文档。
您正在尝试启动一个容器并附加到它-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
推荐阅读
- batch-file - 如何在不手动编辑脚本的情况下通过找到的文件扩展名自动生成用户输入选择
- html - 悬停在每个标签的后代上
, 设置背景颜色为蓝色和颜色为白色
- kubernetes - 如何解释 Ceph 空间使用情况
- c# - 关闭浏览器选项卡时 ASP.NET Core 2.2 注销用户 - IsPersistent 无效
- python - 为什么我的 python3 pip 模块安装在两个不同的目录中
- html - 并排 div 的行为很奇怪
- frameworks - 关于使用 MERN 堆栈的工具的建议
- ios - 在哪里放置 DispatchQueue Swift
- kotlin - 有没有办法将过滤器和映射合并到 Kotlin 中的单个操作中?
- python - 有没有办法让用户定义的函数出现在完全不同的命名空间中?