데비안에서 Xvfb를 시작하는 방법은 무엇입니까?

데비안에서 Xvfb를 시작하는 방법은 무엇입니까?

나는 Debian 웹 서버를 가지고 있으며 가끔 Selenum과 Python을 통해 화면 스크래핑을 수행합니다.

저는 Selenium 제어 하에 실행되는 Firefox용 가상 X 서버로 Xvfb를 사용하고 있습니다. 내가 (생각하는데) 시작해야 한다는 점을 고려 sudo하면내 스택 오버플로 질문) 그래서 계속해서 실행할 수 있다고 생각했습니다.

현재 다음과 같이 명령줄에서 시작합니다.

sudo Xvfb :99 -nolisten tcp -fbdir /var/run

시작할 때 자동으로 이 작업을 수행하려면 어떤 방법을 사용해야 합니까? cron제안대로 사용해야 겠어요여기?

답변1

/etc/rc.local데비안에서는 Xvfb가 백그라운드로 분리되지 않으면 명령 끝에 Xvfb 명령을 추가할 수 있습니다 &.

cron을 사용해도 작동합니다. 단, init 스크립트를 사용하면 실행될 시작 순서의 정확한 시간을 더 효과적으로 제어할 수 있으며 이는 서비스를 시작하는 전통적인 방법입니다.

답변2

~처럼@길스특히 Selenium 테스트에 사용하는 경우 주문형 실행에 더 적합합니다. 다음은 쉘 명령의 예입니다.

export DISPLAY=:99
xdpyinfo -display $DISPLAY > /dev/null || Xvfb $DISPLAY -screen 0 1024x768x16 &

사용하기 전에 디스플레이를 확인하면 xdpyinfo가상 프레임 버퍼를 두 번 실행하지 않는지 확인할 수 있습니다.


정말로 시작해야 하는 경우 다음 방법을 시도해 볼 수 있습니다.초기화 파일스크립트:

#!/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

원천:GitHub의 dloman/xvfb(다음에서 분기됨:jterrace/xvfb)

다른 이름으로 저장 /etc/init.d/xvfb하고 실행 가능하게 만든 후 다음과 같이 실행하십시오.

/etc/init.d/xvfb start

시작 시 자동으로 실행하려면 다음을 실행하세요.

sudo update-rc.d xvfb defaults

자동 실행에서 제거하려면 다음을 실행하십시오.

sudo update-rc.d -f xvfb remove

environment또한 X 프로그램에서 인식할 수 있는 파일 에 추가하십시오 . 예를 들면 다음과 같습니다.

echo DISPLAY=":1" | sudo tee -a /etc/environment

이것은 시스템 버전입니다:dloman/xvfb.service.

답변3

전제가 유효하지 않습니다. Xvfb를 루트로 실행할 이유가 없습니다. 일반적인 X 서버는 정의에 따라 비디오 하드웨어에 액세스할 수 있도록 루트(많은 유니스에서)로 실행되어야 합니다. 이는 Xvfb에 문제가 되지 않습니다.

시작 시 Xvfb를 실행하려면 cron을 사용하여 @reboot5개의 날짜 및 시간 필드를 바꿀 수 있습니다. 루트의 crontab뿐만 아니라 모든 사용자의 crontab에서 이 작업을 수행할 수 있습니다. 그러나 나는 이것을 이해하지 못합니다. 원래 계획했던 대로 필요할 때 Xvfb를 시작하면 스크립트가 더욱 강력해집니다.

관련 정보