VNC远程连接无法打开图形界面应用问题

文章目录

  • 前提:
  • 1、问题描述
  • 2、问题解决
    • 1.切换到需要执行图形界面的用户下
    • 2.修改环境变量参数
    • 3.切换vnc登录的端口号
  • 3、步骤总结(如果第二步过程看不懂可以直接看这个)

在这里插入图片描述

前提:

首先你需要提前配置好vnc环境,如果不会可以参考:VNC安装部署教程
本实验我们以swingbench压测的图形界面为例
第二步问题解决主要以思路为主,看不懂的话直接看第三步步骤总结解决问题就行了

1、问题描述

VNC远程连接无法打开图形界面应用问题_第1张图片
在我们执行swingbench压测时,打开图形界面会卡在这里,那么我们要解决这个问题需要怎们办呢?我们接着往下看

2、问题解决

1.切换到需要执行图形界面的用户下

现在root用户下执行:

export DISPLAY=:2
xhost +

然后窗口不要关闭,在打开一个窗口执行下面的操作:
比如我要进行压测,需要进入Swingbench,那么我就需要切换到Oracle用户下

关于为什么窗口不要关闭解释
在大多数情况下,使用 export 命令设置环境变量后,变量会立即对当前会话生效。这意味着你可以立即在当前终端窗口或会话中使用新的环境变量。
然而,需要注意以下几点:

  1. 只对当前会话生效: 使用 export 设置的环境变量仅对当前终端窗口或会话生效。如果你关闭该窗口或终端会话,或者启动一个新的终端窗口,这些环境变量将会被重置。
  2. 子进程的影响: 如果你从当前终端窗口中启动了其他进程或程序,它们将继承当前终端窗口的环境变量设置。
  3. 永久设置: 如果你希望使环境变量的更改在系统重新启动后仍然保持有效,你可能需要将 export 命令添加到 shell 的配置文件中,如 ~/.bashrc~/.bash_profile(具体文件名可能因使用的 shell 而有所不同)。
    总的来说,export DISPLAY=:2 命令应该立即使 DISPLAY 环境变量生效,但请确保你理解其作用范围以及如何使其更改持久。如果你遇到问题,可以尝试在当前终端窗口中执行 echo $DISPLAY 来验证是否成功设置了 DISPLAY
su - oracle

2.修改环境变量参数

export DISPLAY=:2
xhost +

xhost命令是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示。该命令必须从有显示连接的机器上运行。可以通过使用-host参数,从访问列表中除去一个名称。不要从访问列表中除去当前的名称。如果已经这样做了,请在作出任何更改之前注销系统。

  • xhost 是用来控制X server访问权限的。
  • 通常当你从hostA登陆到hostB上运行hostB上的应用程序时,
  • 做为应用程序来说,hostA是client,但是作为图形来说,
  • 是在hostA上显示的,需要使用hostA的Xserver,所以hostA是
    server.因此在登陆到hostB前,需要在hostA上运行xhost +
    来使其它用户能够访问hostA的Xserver.
  • +:关闭访问控制,允许任何主机访问本地的X服务器;
  • -:打开访问控制,仅允许授权清单中的主机访问本地的X服务器。
  • xhost + ip使ip上的用户能够访问Xserver.
  • xhost + nis:user@domain使domain上的nis用户user能够访问
  • xhost + inet:user@domain使domain上的inet用户能够访问。

这里这个参数是什么都可以,我开始是以1端口登录vnc的,所以我设置2端口,然后在使用2端口登录就行了,只需要注意这里端口开放的是几就需要用几号端口登录
VNC远程连接无法打开图形界面应用问题_第2张图片

DISPLAY 是一个环境变量,用于指定 X Window System 中的显示服务器。在使用图形用户界面(GUI)应用程序时,这个环境变量告诉应用程序在哪里找到显示服务器,以便绘制图形界面。

X Window System 是一种用于在计算机屏幕上创建和管理图形用户界面的系统。DISPLAY 环境变量告诉 X 客户端应用程序与哪个 X 服务器通信。
通常,DISPLAY 的值的格式是 hostname:displaynumber.screennumber,其中:

  • hostname 是运行 X 服务器的机器的名称。如果在本地运行,通常为 “localhost”。
  • displaynumber 是 X 服务器的显示号,通常为 0。
  • screennumber 是屏幕的号码,通常为 0。
    例如,:0.0 表示本地 X 服务器的第一个显示屏的第一个屏幕。在环境变量中,你可能会看到 DISPLAY 的值类似于 localhost:0.0
    当你启动一个 GUI 应用程序时,它会查找 DISPLAY 变量以确定在哪里显示图形界面。如果 DISPLAY 没有正确设置,或者指向的 X 服务器不可用,就会导致类似 “Can’t connect to X11 window server” 的错误。
    在远程连接时,通过 SSH 使用 -X-Y 选项可以将 X11 显示传输到本地机器,从而使得在远程服务器上运行的应用程序的图形界面显示在本地。例如:
ssh -X username@hostname

这样,DISPLAY 就会被设置为指向本地 X 服务器,并且远程应用程序的图形界面将显示在你的本地屏幕上。

3.切换vnc登录的端口号

VNC远程连接无法打开图形界面应用问题_第3张图片
可以看到我原来是1,但是我开放的是2
所以我需要切换2登录
VNC远程连接无法打开图形界面应用问题_第4张图片

export DISPLAY=:2

在使用2号端口尝试打开图形界面就解决问题了
VNC远程连接无法打开图形界面应用问题_第5张图片

3、步骤总结(如果第二步过程看不懂可以直接看这个)

  • 2解决问题主要以解决思路为主,如果看不懂可以直接看这里
    这里以在1号窗口打开为例:
    配置服务器xhost 和DISPLAY变量
#应用服务器root用户
[root]# export DISPLAY=:1
[root]# xhost +
access control disabled, clients can connect from any host
[root]# 
#应用服务器应用用户
[oracle]# export DISPLAY=:1
[oracle]# xhost +
access control disabled, clients can connect from any host
[oracle]# 
#配置应用用户下的.bashrc文件将export DISPLAY=:0 写到这个文件中去,然后执行 . .bash_profile 生效

VNC远程连接无法打开图形界面应用问题_第6张图片
我现在root用户下执行,注意这个会话不要关闭
VNC远程连接无法打开图形界面应用问题_第7张图片
然后在oracle用户下执行,注意这个会话也不要关闭
然后打开vnc1号端口

VNC远程连接无法打开图形界面应用问题_第8张图片
VNC远程连接无法打开图形界面应用问题_第9张图片
就可以成功打开了

OK完结散花,这个过程可能会遇到一些问题,如果有问题可以联系博主解决。VNC远程连接无法打开图形界面应用问题_第10张图片

你可能感兴趣的:(数据库运维,linux,运维,数据库,oracle)