Như @Gilles đã đề xuất, nó phù hợp hơn để chạy theo yêu cầu, đặc biệt là khi bạn đang sử dụng nó để thử nghiệm Selenium. Dưới đây là ví dụ lệnh shell:
export DISPLAY=:99
xdpyinfo -display $DISPLAY > /dev/null || Xvfb $DISPLAY -screen 0 1024x768x16 &
Kiểm tra màn hình bằng cách sử dụng xdpyinfo
trước sẽ đảm bảo bạn sẽ không chạy bộ đệm khung ảo hai lần.
Nếu bạn thực sự cần khởi động nó khi khởi động, bạn có thể thử tập lệnh init.d sau :
#!/bin/sh
XVFB=/usr/bin/Xvfb
XVFBARGS=":1 -screen 0 1024x768x24 -ac +extension GLX +render -noreset -nolisten tcp"
PIDFILE=/var/run/xvfb.pid
case "$1" in
start)
echo -n "Starting virtual X frame buffer: Xvfb"
start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $XVFB -- $XVFBARGS
echo "."
;;
stop)
echo -n "Stopping virtual X frame buffer: Xvfb"
start-stop-daemon --stop --quiet --pidfile $PIDFILE
echo "."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/xvfb {start|stop|restart}"
exit 1
esac
exit 0
Nguồn: dloman / xvfb tại GitHub (rẽ nhánh từ: jterrace / xvfb )
Lưu nó dưới dạng /etc/init.d/xvfb
và làm cho nó có thể thực thi được, sau đó khởi động nó như sau:
/etc/init.d/xvfb start
Để tự động chạy khi khởi động, hãy chạy:
sudo update-rc.d xvfb defaults
Để xóa nó khỏi autorun, hãy chạy:
sudo update-rc.d -f xvfb remove
Đồng thời thêm vào environment
tệp để được các chương trình X nhận ra, ví dụ:
echo DISPLAY=":1" | sudo tee -a /etc/environment
Đây là phiên bản dành cho phiên bản systemd: dloman / xvfb.service .
/etc/rc.local
ưu tiên sử dụngupdate-rc.d
với các tập lệnh riêng của một người không?