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



    在这里插入图片描述

    前提:

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

    1、问题描述

    在这里插入图片描述
    在我们执行swingbench压测时,打开图形界面会卡在这里,那么我们要解决这个问题需要怎们办呢?我们接着往下看

    2、问题解决

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

    现在root用户下执行:

    export DISPLAY=:2
    
    • 1
    xhost +
    
    • 1

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

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

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

    2.修改环境变量参数

    export DISPLAY=:2
    
    • 1
    xhost +
    
    • 1

    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端口登录就行了,只需要注意这里端口开放的是几就需要用几号端口登录
    在这里插入图片描述

    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
    
    • 1

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

    3.切换vnc登录的端口号

    在这里插入图片描述
    可以看到我原来是1,但是我开放的是2
    所以我需要切换2登录
    在这里插入图片描述

    export DISPLAY=:2
    
    • 1

    在使用2号端口尝试打开图形界面就解决问题了
    在这里插入图片描述

    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 生效
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    我现在root用户下执行,注意这个会话不要关闭
    在这里插入图片描述
    然后在oracle用户下执行,注意这个会话也不要关闭
    然后打开vnc1号端口

    在这里插入图片描述
    在这里插入图片描述
    就可以成功打开了

    OK完结散花,这个过程可能会遇到一些问题,如果有问题可以联系博主解决。在这里插入图片描述

  • 相关阅读:
    antd的upload上传组件,上传成功后清除表单校验——基础积累
    Qt 视图框架QGraphicsItem
    C++ map和set(补充)
    java中对象和类应用实例
    MAX3072EESA+T RS-485/RS-422半双工收发器
    1.19.5.3.时态表、关联一张版本表、关联一张普通表、时态表、声明版本表、声明版本视图、声明普通表、时态表函数等
    JVM-Java字节码技术笔记
    【MM小贴士】母子工单物料主数据设置及工单核算
    阿里云服务中断事件:原因、影响与解决方案
    H5 鼠标点击粒子扩散效果
  • 原文地址:https://blog.csdn.net/yushaoyyds/article/details/134505466