xvfb 初步探究

转载:http://blog.csdn.net/span76/article/details/11473315

有时候我们不关注程序是否有界面(比如自动化测试),只要程序在运行就可以了
很感谢 xvfb 这个工具给我们提供了相关的功能
比如在没有 X server 的机器上运行 gedit, 可以用下面的命令
xvfb-run --auto-servernum --server-args="-screen 0 1280x760x24" gedit

xvfb 这个工具相当于一个wrapper, 给应用程序提供虚拟的 X server
用 ps auxf 观察进程的结构,可以发现 xvfb-run 首先创建了 Xvfb:103 这个 daemon 子进程,而后再运行 gedit
...
_ /bin/sh /usr/bin/xvfb-run --auto-servernum --server-args=-screen 0 1280x760x24 gedit _ Xvfb :103 -screen 0 1280x760x24 -nolisten tcp _ gedit

如果,自己编写一个脚本 1.sh, 内容是显示 $DISPLAY 变量
---- 1.sh ---echo $DISPLAY
再用下面的命令运行
xvfb-run --auto-servernum --server-args="-screen 0 1280x760x24" ./1.sh
输出是
:103

而查看进程,原来 deamon 提供 DISPLAY :103
_ /bin/sh /usr/bin/xvfb-run --auto-servernum --server-args=-screen 0 1280x760x24 ./1.sh _ Xvfb :103 -screen 0 1280x760x24 -nolisten tcp
再用命令查看 netstat -ln, 可以看到提供服务的 unix socket
...unix 2 [ ACC ] STREAM LISTENING 2060030 /tmp/.X11-unix/X103
...

总结:
xvfb 是通过提供一个类似 X server 守护进程 和 设置程序运行的环境变量 DISPLAY 来提供程序运行的环境

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,157评论 3 53
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 文/柳青陵 我不能骗自己,我是多么想留在他的身边,哪怕是只能这样痛苦地看着他,也好过相隔天涯,再也见不到他。 二、...
    柳青陵阅读 1,281评论 3 4