有时候我们不关注程序是否有界面(比如自动化测试),只要程序在运行就可以了

很感谢 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 deamon 和 设置程序运行的环境变量  DISPLAY 来提供程序运行的环境

xvfb 初步探究的更多相关文章

  1. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

  2. Asp.NetCore初步探究

      1,  新建一个空的AspNetCore项目,默认Program下的代码如下: public static void Main(string[] args) { BuildWebHost(args ...

  3. iOS中的预编译指令的初步探究

    目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...

  4. 自定义ViewGroup初步探究

    由于项目需要,实现类似于地图控件,能够让一张图标自由缩放并且在其上固定位置,标记一些地点,所以在这里,我考虑了一下,决定使用自定义ViewGroup来实现.

  5. 「2014-3-11」HTTP 初步探究

    网络上存在很多资源,也持续不断地生成新的资源.为了新建.获取和操作这些资源,引来了两个问题:如何定位资源,如何对他们进行操作.第一个问题引申出了 URI / URL 即 uniform resourc ...

  6. Lucene 搜索的初步探究

    搜索应用程序和 Lucene 之间的关系 一般的搜索引擎都会采用这样的 Lucene 采用的是一种称为反向索引(inverted index)的机制.反向索引就是说我们维护了一个词 / 短语表,对于这 ...

  7. 初步探究Android App API接口测试--实战

    一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...

  8. HTTP 初步探究

    网络上存在很多资源,也持续不断地生成新的资源.为了新建.获取和操作这些资源,引来了两个问题:如何定位资源,如何对他们进行操作.第一个问题引申出了 URI / URL 即 uniform resourc ...

  9. redis-4.0.11主从配置初步探究

    redis-4.0.11相较于以前版本,新增了几个安全措施,稍稍研究了6379.conf配置文件,在这里记录一下. 实验环境: centos7.4 redis:redis-4.0.11 1. redi ...

随机推荐

  1. 百度编辑器ueditor简单易用

    最近刚刚被分配任务给一个新闻发布,它采用了富文本编辑器.本人也被用于,只是这一次我选择了百度的富文本编辑器ueditor1_4_3-utf8-jsp版. 事实上看ueditor功能非常强大,只是百度的 ...

  2. c++实现查询天气预报

    原地址:http://blog.csdn.net/x_iya/article/details/8583015 用到的函数.API等 1.中央气象台API返回的JSON数据(http://m.weath ...

  3. [转]apache下htaccess不起作用,linux,windows详解

    可能出现下面这三种的错误可能性: 第一种:启用 rewrite 和 .htaccess 设置 rewrite设置:找到apache的配置文件httpd.conf文件,找到:#LoadModule re ...

  4. WebStorm 7.0 注册码

    User Name: EMBRACE License Key:===== LICENSE BEGIN =====24718-1204201000001h6wzKLpfo3gmjJ8xoTPw5mQvY ...

  5. SQL2005、2008、2000 清空删除日志

    SQL2005清空删除日志: 代码如下: Backup Log DNName with no_log  '这里的DNName是你要收缩的数据库名,自己注意修改下面的数据库名,我就不再注释了. go d ...

  6. oracle 11gR2 在VM中安装步骤

    oacle的安装 一.在oracle官网可以免费下载oracle的软件和安装文档,如果是在虚拟机中的linux系统里安装,可以用FileZilla Client把软件发送到系统中. linux_11g ...

  7. 基于visual Studio2013解决C语言竞赛题之1007找数

         题目 解决代码及点评 /************************************************************************/ ...

  8. PHP - 字符串操作

    第8章 字符串处理 学习要点: 1.字符串格式化 2.操作子字符串 3.字符串比较 4.查找替换字符串 5.处理中文字符 在每天的编程工作中,处理.调整以至最后控制字符串是很重要的一部分,一般也认为这 ...

  9. UML04-顺序图

    1.顺序图由哪几部分组成? 2.下面列出了打印文件时的工作流: 用户通过计算机指定要打印的文件. 打印服务器根据打印机是否空闲,操作打印机打印文件. 如果打印机空闲,则打印机打印文件: 如果打印机忙, ...

  10. 服务启动错误1053,一例解决方案(给用户添加NetworkService权限)

    WIndows XP的服务中,有一个服务需要以NT  AUTHORITY/NetworkService用户启动,但怎么也启动不起来,使用本地系统帐户启动没有任何问题,但是换成NetworkServic ...