使用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