Debian で Xvfb を起動するには?

Debian で Xvfb を起動するには?

私はDebian Webサーバーを持っており、時々SelenumとPythonを介して画面スクレイピングを行います。

私はSelenium制御下で実行されるFirefox用の仮想XサーバーとしてXvfbを使用しています。私が(考えるのに)始めなければならないことを考えるsudo私のスタックオーバーフローの質問)だから、何度も実行できると思いました。

現在、次のようにコマンドラインから始めます。

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

起動時に自動的にこれを行うにはどのような方法を使用する必要がありますか?cron提案どおりに使用する必要があります。ここ

答え1

/etc/rc.localDebian では、Xvfb がバックグラウンドで分離されていない場合は、コマンドの最後に Xvfb コマンドを追加できます&

cronを使用しても機能します。ただし、initスクリプトを使用すると、実行される開始順序の正確な時間をより効果的に制御できます。これはサービスを開始する従来の方法です。

答え2

〜のように@ギルス特にSeleniumテストに使用する場合は、オンデマンド実行に適しています。以下はシェルコマンドの例です。

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

使用前にディスプレイを確認すると、xdpyinfo仮想フレームバッファを2回実行しないことを確認できます。


本当に始める必要がある場合は、次の方法を試してみてください。初期化ファイルスクリプト:

#!/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をrootとして実行する理由はありません。一般的なXサーバーは、定義に従ってビデオハードウェアにアクセスできるように、ルート(多くのUnixで)で実行する必要があります。これはXvfbにとって問題ではありません。

起動時にXvfbを実行するには、cronを使用して@reboot5つの日付と時刻のフィールドを置き換えることができます。ルートのcrontabだけでなく、すべてのユーザーのcrontabでこれを行うことができます。しかし、私はこれを理解していません。もともと計画したように必要なときにXvfbを起動すると、スクリプトがより強力になります。

関連情報