qingkuangs 发表于 2017-7-8 10:28:32

使用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
页: [1]
查看完整版本: 使用XQuartz,将Linux主机上的图像转发到mac上,即X11Forwarding