轉(zhuǎn)載:http://blog.csdn.net/span76/article/details/11473315
有時(shí)候我們不關(guān)注程序是否有界面(比如自動(dòng)化測(cè)試)崔列,只要程序在運(yùn)行就可以了
很感謝 xvfb 這個(gè)工具給我們提供了相關(guān)的功能
比如在沒(méi)有 X server 的機(jī)器上運(yùn)行 gedit, 可以用下面的命令
xvfb-run --auto-servernum --server-args="-screen 0 1280x760x24" gedit
xvfb 這個(gè)工具相當(dāng)于一個(gè)wrapper, 給應(yīng)用程序提供虛擬的 X server
用 ps auxf 觀察進(jìn)程的結(jié)構(gòu),可以發(fā)現(xiàn) xvfb-run 首先創(chuàng)建了 Xvfb:103 這個(gè) daemon 子進(jìn)程,而后再運(yùn)行 gedit
...
_ /bin/sh /usr/bin/xvfb-run --auto-servernum --server-args=-screen 0 1280x760x24 gedit _ Xvfb :103 -screen 0 1280x760x24 -nolisten tcp _ gedit
如果,自己編寫(xiě)一個(gè)腳本 1.sh, 內(nèi)容是顯示 $DISPLAY 變量
---- 1.sh ---echo $DISPLAY
再用下面的命令運(yùn)行
xvfb-run --auto-servernum --server-args="-screen 0 1280x760x24" ./1.sh
輸出是
:103
而查看進(jìn)程阶冈,原來(lái) 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, 可以看到提供服務(wù)的 unix socket
...unix 2 [ ACC ] STREAM LISTENING 2060030 /tmp/.X11-unix/X103
...
總結(jié):
xvfb 是通過(guò)提供一個(gè)類(lèi)似 X server 守護(hù)進(jìn)程 和 設(shè)置程序運(yùn)行的環(huán)境變量 DISPLAY 來(lái)提供程序運(yùn)行的環(huán)境