首先你需要提前配置好vnc环境,如果不会可以参考:VNC安装部署教程
本实验我们以swingbench
压测的图形界面为例
第二步问题解决主要以思路为主,看不懂的话直接看第三步步骤总结解决问题就行了
在我们执行swingbench
压测时,打开图形界面会卡在这里,那么我们要解决这个问题需要怎们办呢?我们接着往下看
现在root用户下执行:
export DISPLAY=:2
xhost +
然后窗口不要关闭,在打开一个窗口执行下面的操作:
比如我要进行压测,需要进入Swingbench,那么我就需要切换到Oracle用户下
关于为什么窗口不要关闭解释
在大多数情况下,使用export
命令设置环境变量后,变量会立即对当前会话生效。这意味着你可以立即在当前终端窗口或会话中使用新的环境变量。
然而,需要注意以下几点:
- 只对当前会话生效: 使用
export
设置的环境变量仅对当前终端窗口或会话生效。如果你关闭该窗口或终端会话,或者启动一个新的终端窗口,这些环境变量将会被重置。- 子进程的影响: 如果你从当前终端窗口中启动了其他进程或程序,它们将继承当前终端窗口的环境变量设置。
- 永久设置: 如果你希望使环境变量的更改在系统重新启动后仍然保持有效,你可能需要将
export
命令添加到 shell 的配置文件中,如~/.bashrc
或~/.bash_profile
(具体文件名可能因使用的 shell 而有所不同)。
总的来说,export DISPLAY=:2
命令应该立即使DISPLAY
环境变量生效,但请确保你理解其作用范围以及如何使其更改持久。如果你遇到问题,可以尝试在当前终端窗口中执行echo $DISPLAY
来验证是否成功设置了DISPLAY
。
su - oracle
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端口登录就行了,只需要注意这里端口开放的是几就需要用几号端口登录
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 服务器,并且远程应用程序的图形界面将显示在你的本地屏幕上。
可以看到我原来是1,但是我开放的是2
所以我需要切换2登录
export DISPLAY=:2
在使用2号端口尝试打开图形界面就解决问题了
#应用服务器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 生效
我现在root用户下执行,注意这个会话不要关闭
然后在oracle用户下执行,注意这个会话也不要关闭
然后打开vnc1号端口
就可以成功打开了
OK完结散花,这个过程可能会遇到一些问题,如果有问题可以联系博主解决。