Cara yang tepat untuk memulai xvfb saat startup di centos?

11

Saya mengikuti tutorial ini , dan saya ingin tahu versi-centos yang setara dari langkah spesifik Ubuntu ini:

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

Apa cara yang tepat untuk memulai xvfb pada startup di centos?

Stefan Kendall
sumber

Jawaban:

12

Saya menggunakan skrip init berikut untuk menambah dan memulai xvfb saat boot, cukup blat di /etc/init.d/ dan jalankan chkconfig xvfb di

   #!/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
Tacticus
sumber
1
jangan lupa tambahkan izin eksekusi ke file ini: chmod + x xvfb
panchicore
2
Meskipun pertanyaannya diajukan untuk CentOS, itu juga berguna untuk distribusi lainnya. Ini bekerja dengan baik di Ubuntu; Anda hanya perlu menjalankan update-rc.dsaja chkconfig. Lihat jawaban ini untuk informasi lebih lanjut tentang update-rc.d.
sigpwned
1
Pertanyaannya adalah bagaimana melakukannya di CentOS. CentOS saat ini menggunakan systemd, dan jawaban ini tidak menyelesaikan pertanyaan. Jawaban dari JdeBP lebih tepat.
Yoichi
Mempertimbangkan pertanyaan itu ditanyakan 6 tahun yang lalu ketika versi centos saat ini tidak ada (juga tidak systemd iirc). Meskipun demikian, solusi systemd jauh lebih baik dan harus menjadi pilihan yang lebih disukai.
Tacticus
19

Dan sekarang, jawaban systemd.

Sudah hampir empat tahun sejak pertanyaan dan jawaban ini, dan dunia telah berubah sementara mereka belum. Sejak versi 7, CentOS telah menggunakan systemd. Ubuntu disebutkan dalam pertanyaan dan komentar. Sejak versi 15, Ubuntu telah menggunakan systemd juga.

Meskipun seseorang dapat menggunakan rcskrip System 5 di bawah systemd, skrip dalam jawaban di sini sangat suboptimal, untuk sedikitnya. Salah satunya menggunakan killall, yang masalah untuk manajemen demon sudah diketahui dengan baik; dan yang lain adalah kekacauan file kunci reyot dan logika file PID tidak ada yang benar-benar diperlukan di bawah manajer layanan, karena manajer layanan sendiri melacak proses demon.

Seperti yang saya katakan di tempat lain, jika Anda mulai mempelajari hal-hal ini dan menggunakan CentOS Linux versi 7 atau lebih baru atau Ubuntu Linux versi 15 atau lebih baru, jangan mulai dengan rcskrip System 5 di tempat pertama. Mulailah dengan file unit systemd.

templat untuk beberapa layanan Xvfb

xvfb.serviceFile unit systemd sederhana untuk xvfb dapat ditemukan di https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 dan di /ubuntu//a/621256/43344 . Namun, seperti yang saya sebutkan di bagian terakhir, orang juga dapat mengambil pendekatan templatized:

[Satuan]
Deskripsi = virtual frame buffer X server untuk tampilan% I
Setelah = network.target

[Layanan]
ExecStart = / usr / bin / Xvfb% I -screen 0 1280x1024x24

[Install]
WantedBy = multi-user.target

Sebagai file unit yang ditulis secara lokal, non-sistem, tidak dikemas untuk layanan seluruh sistem (bukan per-pengguna), hal ini /etc/systemd/system/[email protected]tentu saja berlaku.

mengendalikan layanan

Satu instantiates template, ke dalam layanan bernama sebenarnya, dengan nomor tampilan yang diinginkan. Untuk tampilan :99, oleh karena itu, ada instance layanan aktual bernama xvfb@:99.service.

  • Atur layanan untuk memulai otomatis saat bootstrap dengan systemctl enable xvfb@:99.service.
  • Hapus setel memulai layanan secara otomatis systemctl disable xvfb@:99.service.
  • Mulai layanan secara manual dengan systemctl start xvfb@:99.service.
  • Hentikan layanan secara manual dengan systemctl stop xvfb@:99.service.
  • Periksa status layanan saat ini secara terperinci dengan systemctl status xvfb@:99.service.

Bacaan lebih lanjut

JdeBP
sumber
tautan untuk "Menambahkan xvfb ke layanan sistem" sudah mati.
Manish
Pertanyaan SuperUser yang dirujuk telah dihapus secara otomatis. Untungnya, si penanya melakukan multi-posting. ☺
JdeBP
4

Berikut ini skrip init yang bagus untuk melakukannya:

http://onemoretech.wordpress.com/2009/05/27/an-xvfb-init-script/

Scriptnya adalah:

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

Simpan skrip sebagai xvfbd dan salin skrip ke /etc/init.d, lalu jalankan perintah berikut:

sudo chkconfig --add xvfbd
Thilo
sumber
1

Cara paling sederhana adalah menambahkan baris berikut ke dalam /etc/rc.localfile (buatkan jika tidak ada):

Xvfb :0 -screen 0 1024x768x16 &

untuk memulai X framebuffer virtual saat boot.

kenorb
sumber
-2

Anda dapat menggunakan cara yang lebih mudah jika Anda hanya perlu memulai atau meluncurkan sesuatu pada boot komputer.

Pada Redhat / CentOS, tambahkan baris skrip Anda pada file ini: /etc/rc.d/rc.local

tryp
sumber
Saya tidak menurunkan suara Anda, tetapi saya pikir ini hanya bekerja untuk Sistem V.
Donato
Saya mencoba ini pada sistem vanilla CentOS 7 hari ini (karena saya malas), dan berhasil, meluncurkan Xvfb.
clusterdude