【问题标题】:How to run multiple applications that need x server in headless ubuntu server?如何在无头 ubuntu 服务器中运行多个需要 x 服务器的应用程序?
【发布时间】:2021-04-28 09:26:45
【问题描述】:

我在远程无头 ubuntu 服务器中有一个显卡。 我已将 nvidia-xconfig 设置为进行虚拟显示。 我需要虚拟 x 服务器,而不是 xvfb,以无头运行统一游戏,但录制游戏渲染视频。 xvfb 确实可以,但是不使用显卡,渲染很慢。

如果我运行单个游戏,这适用于 xinit。

xinit ./game.x86_64 开始游戏并毫无问题地渲染游戏。

但是,当我尝试使用不同的 x 服务器同时启动多个游戏时:

xinit ./game1.x86_64 -- :0

xinit ./game2.x86_64 -- :1

这不能正确渲染。其中一个游戏(最先开始的那个)没有渲染。 (查看录制的视频)据我所知,这是因为单个显卡只能运行单个x-server。

然后,我通过调整 xorg.conf 设置多个屏幕并尝试

xinit ./game1.x86_64 -- :0.0

xinit ./game2.x86_64 -- :0.1

但是,由于 xinit 尝试启动一个新服务器,后者不起作用,告诉已经有一个 x-server 在 X:0 运行

如果我搜索多显示器 x-server 设置,我只能找到真正的显示器设置,而我需要的是虚拟显示器设置。

有没有办法在无头服务器中启动多个需要屏幕的应用程序?

我认为我需要知道的是

  1. 一种启动具有多个屏幕的 x-server 并告诉应用程序使用哪个屏幕或

  2. 一种在控制台上远程使用 Windows 管理器的方法

如果有更好的解决方案,或者我遗漏了什么,那也会很有帮助。

【问题讨论】:

    标签: remote-server xorg virtual-screen


    【解决方案1】:

    我误解了 xinit 的工作原理。 我通过在没有任何后台客户端(如 tmux)的情况下运行 xinit 来解决这个问题

    xinitxinit -- :0

    然后,指定要使用的显示器。当然,在 xorg.conf 中设置了多个监视器。 为了统一,只导出显示环境变量就足够了。

    export DISPLAY=:0.0 用于游戏 1

    export DISPLAY=:0.1 用于游戏 2

    日志说 unity 可以识别两个显示器,但 game1 说

    :0.0 display is 'display 0 (Primary display)'

    game2 说

    :0.1 display is 'display 0 (Primary display)'

    我的误解是我认为 xinit 只用于客户端应用程序,尽管 xinit 可以在没有任何客户端应用程序的情况下运行并且只是在后台运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 2020-09-09
      • 2016-05-26
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多