如何find哪个屏幕(和端口)的KVM客人的VNC用户界面? 或者如何分配它

有没有一种简单的方法来find一个KVM客人绑定的VNC屏幕(即端口号减5900)?

我的客人都configuration为启用VNC,但是他们占用端口的顺序是随机的。

或者,有没有办法在客人或主人的configuration中分配他们,这样每个客人都会占用一个预定义的端口?!

既然你使用的是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显示端口的名称特别相关是由于使用了开放星云)

编辑:现在,您可以使用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 

还把它变成了一个按端口号sorting输出的函数:

 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 } 

我会跑:

 ps aux | grep "VM name/config" 

记下进程ID然后

 netstat -apn | grep "process ID" 

这应该表明你是通过这个过程开放的。

要设置显示,只需将-vnc <ip:display>选项明确地提供给qemu-kvm。 请参见手册页到qemu-kvm ,尤其是-vnc参数部分以获取详细信息。