
有沒有簡單的方法可以找到 KVM 來賓綁定的 VNC 螢幕(即連接埠號減 5900)?
我的來賓都配置為在啟用 VNC 的情況下運行,但它們佔用連接埠的順序是隨機的。
或者,有沒有辦法在(來賓或主機)配置中分配它們,以便每個對應的來賓將佔用一個預先定義的連接埠?
答案1
既然你正在使用libvirt
,你就可以問它!
root@onhost1:~# virsh list
Id Name State
----------------------------------
1 one-34 running
2 one-36 running
3 one-38 running
root@onhost1:~# virsh vncdisplay one-34
:34
root@onhost1:~# virsh vncdisplay 1
:34
(我的名稱與 VNC 顯示連接埠的特殊關聯是由於使用了 Open Nebula)
編輯:現在,您可以使用 domdisplay 來獲取顯示的 URI,無論是 VNC 還是 Spice:
○ → virsh domdisplay win-michael
vnc://127.0.0.1:0
○ → for dom in $(virsh list --name); do echo -n "$dom: "; virsh domdisplay $dom; done
win-michael-m: vnc://127.0.0.1:0
這是一次為所有正在運行的來賓執行此操作的一行程式碼:
for i in $(virsh -q list|awk '{print $2}'|sort); do
echo -e "\033[01;31m$i\033[00m -> $(virsh vncdisplay $i)"
done
也使其成為按連接埠號碼對輸出進行排序的函數:
function vnc-list
{
for i in $(virsh -q list|awk '{print $2}'|sort); do
PORTNUM=$(virsh vncdisplay $i|cut -f 2 -d ':')
printf "% 2d: \033[01;32m%.20s\033[00m\n" "$PORTNUM" "$i";
done | sort -n
}
答案2
我會跑:
ps aux | grep "VM name/config"
記下進程 ID,然後
netstat -apn | grep "process ID"
這應該表明該進程已開啟連接埠。
答案3
要設定顯示,只需明確-vnc <ip:display>
向 qemu-kvm 提供選項即可。請參閱qemu-kvm 的手冊頁,特別是-vnc
參數部分的詳細資訊。