Bagaimana cara memeriksa apakah Xvfb sedang berjalan pada layar: 0?


17

Judul mengatakan itu semua. pgrep Xvfbhanya setengah dari triknya. Itu tidak akan memberi tahu saya nomor tampilan.

Jawaban:


23

Saya tidak yakin apa yang ingin Anda capai, tetapi Anda dapat memeriksa apakah X Display tersedia dengan menjalankan "x display info":

xdpyinfo -display :0 >/dev/null 2>&1 && echo "In use" || echo "Free"

Catatan: jika Anda tidak dapat mengakses layar, layar juga akan dilaporkan sebagai "Gratis". Cara lain adalah memeriksa keberadaan /tmp/.X0-lockyang berisi file PID dari server X.

Alih-alih menampilkan perintah, cara yang lebih dapat diandalkan adalah memeriksa proses yang cocok dengan biner:

pids=$(pidof /usr/bin/Xvfb)
if [ -n "$pids" ]; then
    processes="$(ps --format command --no-headers -ww --pid $pids)"
else
    echo "Not running"
fi

Sumber: https://github.com/Bumblebee-Project/Bumblebee/blob/master/install-files/common-functions#L112


1
xdpyinfolakukan trik untuk saya, terima kasih! Btw. Saya ingin mengatur variabel DISPLAY env berdasarkan Xvfb yang berjalan pada: 0.
Paweł Gościcki


Jadi Anda mencoba mendapatkan nomor tampilan yang digunakan oleh Xvfb? Coba gunakan perintah ps dalam jawaban saya dan gunakan sesuatu seperti display=":${processes##*:}";display="${%% *}"untuk mendapatkan nomor tampilan (dengan asumsi itu diberikan dengan perintah yang dilakukan Xorgsetidaknya)
Lekensteyn

Saya hanya menjalankannya :0, jadi pemeriksaan sederhana :0sudah cukup untuk kebutuhan saya. Terima kasih lagi!
Paweł Gościcki

Saya tidak setuju dengan proses pengecekan. Proses dapat berjalan tetapi belum diinisialisasi sepenuhnya. xdpyinfo sepertinya itu akan menjadi solusi yang lebih baik karena saya menganggap itu berkomunikasi dengan Xvfb.
Nathan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.