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.

Paweł Gościcki
sumber

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

Lekensteyn
sumber
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