Saya punya server web Debian yang saya gunakan untuk sesekali mengikis layar melalui Selenum dan Python.
Saya menggunakan Xvfb sebagai server X virtual untuk Firefox untuk dijalankan ketika dikontrol oleh Selenium. Mengingat bahwa saya (berpikir) saya harus mulai menggunakan ini sudo
, saya tidak berpikir itu akan layak untuk memulainya dari Python setiap kali (lihat pertanyaan Stack Overflow saya ), jadi saya pikir saya bisa menjalankannya setiap saat .
Saat ini saya memulainya seperti ini di baris perintah:
sudo Xvfb :99 -nolisten tcp -fbdir /var/run
Metode apa yang harus saya gunakan untuk melakukan ini secara otomatis saat startup? Haruskah saya menggunakan cron
, seperti yang disarankan di sini ?
/etc/rc.local
disukai untuk digunakanupdate-rc.d
dengan skrip individual sendiri?update-rc.d
lebih disukai dan tentu saja lebih mampu, tetapirc.local
lebih cepat dan lebih mudah. Juga, saya pikir Gilles benar, tidak ada alasan ini perlu dijalankan sebagai root.Premis Anda tidak valid: tidak ada alasan untuk menjalankan Xvfb sebagai root. Server X Anda yang biasa hanya perlu dijalankan sebagai root (pada banyak tetapi tidak semua persatuan) hanya agar dapat mengakses perangkat keras video; itu bukan masalah untuk Xvfb secara definisi.
Jika Anda ingin menjalankan Xvfb saat startup, Anda dapat menggunakan cron dengan
@reboot
mengganti lima bidang tanggal dan waktu. Anda dapat melakukannya di crontab pengguna mana pun, bukan hanya root. Tapi saya tidak mengerti intinya. Skrip Anda akan lebih kuat jika Anda memulai Xvfb saat Anda membutuhkannya, persis seperti yang Anda rencanakan semula.sumber
xvfb-run
perintah yang biasanya dikirimkan bersama Xvfb. Berikut ini adalah referensixvfb-run
klien untuk manpages.debian.org/stretch/xvfb/xvfb-run.1.en.html . @Paul Anda bisa menjalankannya sebagai berikut:xvfb-run --server-args="-nolisten tcp -fbdir /var/run" python some-selenium.py
Seperti yang disarankan @Gilles , ini lebih cocok untuk dijalankan berdasarkan permintaan, terutama saat Anda menggunakannya untuk pengujian Selenium. Berikut ini contoh perintah shell:
Memeriksa tampilan menggunakan
xdpyinfo
sebelumnya akan memastikan Anda tidak akan menjalankan framebuffer virtual dua kali.Jika Anda benar-benar perlu memulainya saat startup, Anda dapat mencoba skrip init.d berikut :
Sumber: dloman / xvfb di GitHub (bercabang dari: jterrace / xvfb )
Simpan sebagai
/etc/init.d/xvfb
dan jalankan, kemudian mulai sebagai:Untuk berjalan secara otomatis saat startup, jalankan:
Untuk menghapusnya dari autorun, jalankan:
Juga tambahkan ke
environment
file untuk dikenali oleh program X, misalnya:Ini adalah versi untuk versi systemd: dloman / xvfb.service .
sumber