Làm cách nào để kiểm tra xem Xvfb có (đang) chạy trên màn hình không: 0?


17

Tiêu đề nói lên tất cả. pgrep Xvfbchỉ thực hiện một nửa mẹo. Nó sẽ không cho tôi biết số hiển thị.

Câu trả lời:


23

Tôi không chắc chắn những gì bạn đang cố gắng thực hiện, nhưng bạn có thể kiểm tra xem Màn hình X có khả dụng hay không bằng cách chạy "x thông tin hiển thị":

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

Lưu ý: nếu bạn không thể truy cập vào màn hình, nó cũng sẽ được báo cáo là "Miễn phí". Một cách khác là kiểm tra sự tồn tại của /tmp/.X0-locktệp chứa tệp PID của máy chủ X.

Thay vì hiển thị lệnh, một cách đáng tin cậy hơn sẽ là kiểm tra các quy trình khớp với nhị phân:

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

Nguồn: https://github.com/Bumblebee-Project/Bumblebee/blob/master/install-files/common-fifts#L112


1
xdpyinfolừa tôi, cảm ơn! Btw. Tôi muốn đặt biến env HIỂN THỊ dựa trên Xvfb chạy trên: 0.
Paweł Gościcki


Vì vậy, bạn đang cố gắng để có được số hiển thị được sử dụng bởi Xvfb? Hãy thử sử dụng lệnh ps trong câu trả lời của tôi và sử dụng một cái gì đó như display=":${processes##*:}";display="${%% *}"để lấy số hiển thị (giả sử nó được đưa ra với lệnh được thực hiện Xorgít nhất)
Lekensteyn

Tôi sẽ có nó chỉ chạy trên :0, vì vậy kiểm tra đơn giản :0là đủ cho nhu cầu của tôi. Cảm ơn một lần nữa!
Paweł Gościcki

Tôi không đồng ý với quá trình kiểm tra. Quá trình có thể đang chạy nhưng chưa được khởi tạo đầy đủ. xdpyinfo có vẻ như nó sẽ là một giải pháp tốt hơn vì tôi cho rằng nó đang liên lạc với Xvfb.
Nathan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.