zoukankan      html  css  js  c++  java
  • xvfb 初步探究

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

    很感谢 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 来提供程序运行的环境


  • 相关阅读:
    白帽子 攻防
    自定义WCF的配置文件
    .net快速创建PDF文档 by c#
    如何在面试中发现优秀程序员
    kafka-java客户端连接
    xshell 登陆堡垒机实现自动跳转
    良好的编程习惯
    Mycat-介绍
    scala-传名函数和传值函数
    springboot-31-springboot静态注入
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3310732.html
Copyright © 2011-2022 走看看