Xvfb虚拟屏幕(Linux)中文入门篇1:(wikipedia摘要,适当改写)
原始网址:Xvfb - Wikipedia
一、综述
xfb(X虚拟帧缓冲区)是实现X11显示服务器协议的显示服务器。
Xvfb在虚拟内存中执行所有图形化操作,而不显示任何屏幕输出。
从X客户端应用程序的角度来看,它的行为与任何其他X显示服务器完全一样,服务请求并适当地发送事件和错误。但是,没有显示任何输出。
这个虚拟服务器不需要它运行的计算机有任何类型的图形适配器、屏幕或任何输入设备。只需要一个网络层。
xfb支持多种X协议扩展,如通过Mesa来合成和OpenGL GLX支持。
二、使用场景
1、客户端后台运行。(XWD程序或类似的程序捕获屏幕截图可以用来实际看到结果)
三、应用实例
1、投屏
例如,下面的命令序列将虚拟framebuffer X服务器作为显示器(编号:1)运行,运行一个程序(xclock),并在文件映像中捕获虚拟屏幕(XWD命令):
Xvfb :1 &xclock -display :1 &xwd -display :1 -silent -root -out image.xwd
结果可以通过运行xwud程序( xwud -in image.xwd
)来显示。
xwud -in image.xwd
补充(另一种截屏方法):
(1)Ubuntu 24.04 server 终端:
预先安装ImageMagick
sudo apt install imagemagick
(2)截屏
Xvfb :1 &
xclock -display :1 &
import -display :1 -window root screenshot.png
拷贝到win11的共享目录下查看:(我用的是VirtualBox虚拟机,win11共享目录和拷贝文件的方法自行百度)
xvfb-run程序通常用于自动查找可用显示器和管理身份验证的过程:(将command换成xclock、xeyes,gedit)
xvfb-run command
具体案例待补充······
2、通过SSH远程控制
xfb也用于远程控制。
VNC通过SSH可以比X11通过SSH, 特别减少延迟在互联网上。
Xvfb通常与轻量级窗口管理器(如Fluxbox或Openbox)和VNC服务器(如X11vnc)结合使用。在服务器上启动此命令的可能顺序是:
export DISPLAY=:1
Xvfb "$DISPLAY" -screen 0 1024x768x24 &
fluxbox &
x11vnc -display "$DISPLAY" -bg -nopw -listen localhost -xkb
下一步是启动SSH客户端(如PuTTY),启用到本地主机端口5900的隧道功能。然后,vncviewer可以连接到本地主机以获得对服务器的远程控制。
ssh -N -T -L 5900:localhost:5900 user@remotehost &
vncviewer -encodings 'copyrect tight zrle hextile' localhost:5900
补充:
Xvfb "$DISPLAY" -ac
-ac代表关闭xvfb的访问控制