使用XQuartz,将Linux主机上的图像转发到mac上,即X11Forwarding


1,需求场景

我的linux服务器上跑了好几个java应用,现在想监控这些应用的详细情况,方便优化jvm性能。zabbix这些监控软件就不说了,主要是用jdk自带了一款监控软件,叫做visualVM,但是visualVM是一款图形界面工具,而我的centos上没有安装图形界面,所以不能运行该工具。可能你会说使用visualVM的远程监控,对,可以使用远程监控,但是很不方便,使用jstatd功能太弱,使用jmx需要重启我的应用,所以我不想这么干。

现在有没有这样一种方法,在没有图形界面的linux上运行jvisualvm,然后把jvisualvm图像发送到我的本地电脑上显示

2.解决步骤

在没有图形界面的centos上运行visualVM,就会收到如下报错:

# /usr/java/jdk1.8.0_112/bin/jvisualvm
/usr/java/jdk1.8.0_112/lib/visualvm/platform/lib/nbexec: WARNING: environment variable DISPLAY is not set

工具:

1.XQuartz

Mac下载安装XQuartz

https://www.xquartz.org/

2.登录到centos,修改/etc/ssh/sshd_config,打开如下几项

X11Forwarding yes

X11DisplayOffset 10

X11UseLocalhost yes

然后重启sshd服务

3,linux上安装一下一些组件:

yum install xorg-x11-xauth xterm libXi libXp libXtst -y

到这里基本就完了,然后在mac本地打开终端,连接到centos上

ssh -XY username@hostname

然后在此运行# /usr/java/jdk1.8.0_112/bin/jvisualvm,该软件的图像即会发送到我的mac上来显示了,就像mac本地使用该工具一样

一些报错解决方法:

1.

X11 connection rejected because of wrong authentication

出现上面的报错查看用户家目录下有没有.Xauthority这个文件,正常情况下使用的,如果没有,可能是登录到linux系统后切换了用户了,在原来用户的家目录找找

2.

打开图形界面工具既不报错也不显示打开应用

该问题原因也不是很清楚,不过可以尝试打开XQuartz,在XQuartz右键--应用程序--终端,执行

xhost + 远程主机ip

执行完显示being added to access control list,表示成功添加访问权限

或者在远程主机上设置DISPLAY环境

export DISPLAY=localhost:0(localhost:0不一定适用于任何主机)

正常情况登录到主机上会自动设置好这个变量。

 

参考这篇文章:http://blog.creke.net/810.html

如果不能通过这种方法实现X11转发,可以通过一下方案来实现

centos通过vnc查看X11图形窗口:http://blog.creke.net/811.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM