私はフォローしています このチュートリアル 、そして私はこのubuntu固有のステップの同等のcentosバージョンを知りたいです:
You may receive a few warnings regarding fonts and such, but it’ll still work despite these. If you want the framebuffer to start automatically on system startup you can do:
Sudo update-rc.d xvfb defaults 10
CentOSの起動時にxvfbを起動する適切な方法は何ですか?
次のinitスクリプトを使用して、起動時にxvfbを追加して起動し、/ etc/init.d /にあるものをblatして、chkconfigxvfbを実行します。
#!/bin/bash
#chkconfig: 345 95 50
#description: Starts xvfb on display 99
if [ -z "$1" ]; then
echo "`basename $0` {start|stop}"
exit
fi
case "$1" in
start)
/usr/bin/Xvfb :99 -screen 0 1280x1024x24 &
;;
stop)
killall Xvfb
;;
esac
これらの質疑応答からほぼ4年が経ち、世界は変わりましたが、変わっていません。バージョン7以降、CentOSはsystemdを使用しています。 Ubuntuは質問とコメントで言及されています。バージョン15以降、Ubuntuはsystemdも使用しています。
SystemdでSystem5 rc
スクリプトを使用できますが、ここでの回答のスクリプトは、控えめに言っても非常に最適ではありません。デーモン管理の問題がよく知られているkillall
を簡単に使用します。もう1つは、がらくたロックファイルとPIDファイルロジックの混乱noneですが、サービスマネージャー自分自身はデーモンプロセスを追跡します。
他の場所で述べたように、CentOS Linuxバージョン7以降またはUbuntu Linuxバージョン15以降を使用している場合は、最初にSystem 5 rc
スクリプトで始めないでください。 。 systemdユニットファイルから始めます。
Xvfbの単純なxvfb.service
systemdユニットファイルは にありますhttps://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 および https://askubuntu.com/a/621256/43344 にあります。ただし、後者で述べたように、テンプレート化されたアプローチを取ることもできます。
[Unit] Description =ディスプレイ用仮想フレームバッファーXサーバー%I After = network.target [Service] ExecStart =/usr/bin/Xvfb%I -screen 0 1280x1024x24 [Install] WantedBy = multi-user.target
ローカルで記述された、システム全体ではない、パッケージ化されていない、システム全体の(ユーザーごとではない)サービス用のユニットファイルとして、これはもちろん/etc/systemd/system/[email protected]
に入ります。
テンプレートを、必要な表示番号を使用して実際の名前付きサービスにインスタンス化します。したがって、表示:99
には、xvfb@:99.service
という名前の実際のサービスインスタンスがあります。
systemctl enable xvfb@:99.service
で自動開始するようにサービスを設定します。systemctl disable xvfb@:99.service
を使用してサービスの自動開始の設定を解除します。systemctl start xvfb@:99.service
を使用して手動でサービスを開始します。systemctl stop xvfb@:99.service
を使用して手動でサービスを停止します。systemctl status xvfb@:99.service
を使用して、現在のサービスステータスを詳細に調べます。systemctl
。 systemdのマニュアルページ。 freedesktop.org。これを実現するためのNiceinitスクリプトは次のとおりです。
http://onemoretech.wordpress.com/2009/05/27/an-xvfb-init-script/
スクリプトは次のとおりです。
#!/bin/bash
#
# /etc/rc.d/init.d/xvfbd
#
# chkconfig: 345 95 28
# description: Starts/Stops X Virtual Framebuffer server
# processname: Xvfb
#
. /etc/init.d/functions
[ "${NETWORKING}" = "no" ] && exit 0
PROG="/usr/X11R6/bin/Xvfb"
PROG_OPTIONS=":5 -screen 0 640x480x24"
PROG_OUTPUT="/tmp/Xvfb.out"
case "$1" in
start)
echo -n "Starting : X Virtual Frame Buffer "
$PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 &
disown -ar
/bin/usleep 500000
status Xvfb & >/dev/null && echo_success || echo_failure
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
/bin/touch /var/lock/subsys/Xvfb
/sbin/pidof -o %PPID -x Xvfb > /var/run/Xvfb.pid
fi
echo
;;
stop)
echo -n "Shutting down : X Virtual Frame Buffer"
killproc $PROG
RETVAL=$?
[ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb
/var/run/Xvfb.pid
echo
;;
restart|reload)
$0 stop
$0 start
RETVAL=$?
;;
status)
status Xvfb
RETVAL=$?
;;
*)
echo $"Usage: $0 (start|stop|restart|reload|status)"
exit 1
esac
exit $RETVAL
スクリプトをxvfbdとして保存し、スクリプトを/etc/init.d
にコピーしてから、次のコマンドを実行します。
Sudo chkconfig --add xvfbd
最も簡単な方法は、次の行を/etc/rc.local
ファイルに追加することです(存在しない場合は作成します)。
Xvfb :0 -screen 0 1024x768x16 &
ブート時にX仮想フレームバッファーを開始します。