จะตรวจสอบได้อย่างไรว่า Xvfb ทำงานอยู่บนจอแสดงผลแล้วหรือไม่: 0


17

ชื่อกล่าวมันทั้งหมด pgrep Xvfbครึ่งหนึ่งของเคล็ดลับเท่านั้น มันจะไม่บอกหมายเลขที่แสดง

คำตอบ:


23

ฉันไม่แน่ใจว่าคุณพยายามทำอะไรให้สำเร็จ แต่คุณสามารถตรวจสอบว่า X Display มีให้ใช้งานหรือไม่โดยเรียกใช้ "x display info":

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

หมายเหตุ: หากคุณไม่สามารถเข้าถึงหน้าจอได้ระบบจะรายงานว่า "ฟรี" เช่นกัน อีกวิธีคือตรวจสอบ/tmp/.X0-lockว่ามีไฟล์ PID ของเซิร์ฟเวอร์ X อยู่หรือไม่

แทนที่จะแสดงคำสั่งวิธีที่น่าเชื่อถือมากขึ้นคือการตรวจสอบกระบวนการที่ตรงกับไบนารี:

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

ที่มา: https://github.com/Bumblebee-Project/Bumblebee/blob/master/install-files/common-functions#L112


1
xdpyinfoเคล็ดลับสำหรับฉันไม่ขอบคุณ! Btw ฉันต้องการตั้งค่าตัวแปร DISPLAY env ตาม Xvfb ที่ทำงานบน: 0
PawełGościcki


ดังนั้นคุณกำลังพยายามรับหมายเลขแสดงผลที่ใช้โดย Xvfb ลองใช้ PS คำสั่งในคำตอบและการใช้งานของฉันสิ่งที่ต้องการdisplay=":${processes##*:}";display="${%% *}"ที่จะได้รับจำนวนการแสดงผล (สมมติว่าก็ให้มีคำสั่งที่จะทำเพื่อXorgอย่างน้อย)
Lekensteyn

ฉันจะให้มันทำงานเฉพาะในการ:0ตรวจสอบง่าย ๆ:0ก็เพียงพอสำหรับความต้องการของฉัน ขอบคุณอีกครั้ง!
PawełGościcki

ฉันไม่เห็นด้วยกับการตรวจสอบกระบวนการ กระบวนการสามารถทำงานได้ แต่ยังไม่ได้เริ่มต้นอย่างสมบูรณ์ xdpyinfo ดูเหมือนว่ามันจะเป็นทางออกที่ดีกว่าเพราะฉันคิดว่ามันเป็นการสื่อสารกับ Xvfb
นาธาน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.