如何指定显示?

当我在 SSH 上运行某些程序(例如 firefox &)时,会得到一个错误

Error: no display specified

我想打开许多显示器,仍然显示每个程序的 stdout

初始问题: 如何指定显示以获得多显示程序?

Pablo Santa Cruz 给了我以下代码作为解决方案。 我不明白。

$ export DISPLAY=yourmachine.yourdomain.com:0.0


$ firefox &

指令中的 yourmachineyourdomain.com是什么?

409510 次浏览
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &

当您通过 SSH 连接到另一台计算机时,可以在 SSH 中启用 X-Forforward,这样 X 个窗口就可以通过 SSH 隧道加密转发到您的计算机。可以通过将 -X附加到 SSH 命令行或在 SSH 配置文件中设置 ForwardX11 yes来启用 X 转发。

要检查 X 转发是否成功设置(服务器可能不允许) ,只需尝试 echo $DISPLAY输出类似于 localhost:10.0的内容。

试试看

export DISPLAY=localhost:0.0

X 的工作方式与任何网络程序的工作方式相同。您有一个在特定机器上运行的某种描述的服务器(在本例中是 X 显示服务器) ,并且有 X 客户机(如 firefox)试图连接到该服务器以显示它们的信息。

通常(在“主”计算机上) ,客户机和服务器运行在同一台机器上,而且只有一台服务器,但是 X 足够强大,不需要这样做。它从一开始就内置了服务器/客户端分离。

这样你就可以做一些奇妙的事情,比如在地球的另一边登录你的盒子(以文本模式) ,告诉它显示服务器就是你当前所在的盒子,然后,瞧,窗口突然开始在本地出现。

为了让客户端与用户交互,它需要知道如何 找到服务器。有很多方法可以做到这一点。许多客户端允许 -display--display选项指定它:

xeyes -display paxbox1.paxco.com:0.0

如果没有特别指定的显示器,许多人会使用 ABc0环境变量。您可以像设置其他变量一样设置这个变量:

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting)

DISPLAY变量的第一部分只是显示服务器机器的地址。它遵循与任何其他 IP 地址相同的规则; 它可以是可解析的 DNS 名称(包括 localhost)或特定的 IP 地址(如192.168.10.55)。

第二部分是 X 特异性。它提供了 X“ display”(X server)编号和要使用的屏幕编号。第一个(显示数字)通常指一组包含一个或多个屏幕但只有一个键盘和鼠标(即一个输入流)的设备。屏幕编号通常给出该组中的特定屏幕。

例如:

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

这里有一台带有两个显示服务器的机器(paxbox1.paxco.com)。第一个有四个屏幕,第二个有两个。那么可能的情况是:

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

这取决于您希望实际窗口出现的位置以及希望使用的输入设备。

尝试安装 Xorg-x11-xauth包。

我也遇到过类似的问题,所以也许这个答案会对某人有所帮助。

出现 Error: no display specified错误的原因是正在启动 Firefox,但是远程主机上没有运行 X 服务器(GUI)。您可以使用 X11转发在远程主机上运行 Firefox,但是在本地主机上显示它。在 MacOSX 上,您需要下载 < strong > XQuartz 才能使用 X11转发。如果没有它,就不会有 $DISPLAY变量集,所以如果尝试使用 echo $DISPLAY,它将是空白的。

就连我在 CentOS 6.8中也遇到过同样的问题。

yum reinstall xorg*

结束当前会话并在 mobiXterm 等工具中打开另一个会话。确保工具中启用了会话 X11转发。

当通过 SSH 连接时,请不要尝试手动设置 $DISPLAY。
如果您通过 SSH -X连接,并且 $DISPLAY 保持为空,这通常意味着无法建立加密通道。

很可能您丢失了包 xauthxorg-x11-xauth。请尝试使用以下方法将其安装到远程计算机上:

sudo apt-get install xauth

或者

sudo apt-get install xorg-x11-xauth

然后重新启动 SSH 连接。不要忘记使用 SSH -X,以便 X Window 输出被转发到本地计算机。

现在再次尝试 echo $DISPLAY0,查看 $DISPLAY 是否已被 SSH 恶魔自动设置。它应该会显示一条带有 IP 地址和端口的行。

我通过 vnc 了解 X11更多。 若要指定显示以获取多显示程序, Export DISPLAY = IP: DisplayNum. ScreenNum

比如说,

vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY
export DISPLAY=:2  # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY

我今天也遇到了类似的问题,所以,这里有一个简单的解决方案: 在对计算机执行 SSH 时,只需添加 Ctrl-Y

ssh user@ip_address -Y

登录后,键入 firefox &。 你可以走了。

登入你的服务器

ssh -X root@yourIP

编辑/etc/ssh/sshd _ config 文件,并将此行添加到该文件中。

X11UseLocalhost no

为 CentOS 重新启动 sshd (检查一下你们的分销渠道)

/sbin/service sshd restart

检查你的显示屏

echo $DISPLAY

你应该看看这个

yourIP:10.0

好好享受吧

firefox

了解更多信息

在输入 firefox 之前,我使用 xming 服务器使用以下命令 出口展示 = 0:0