Xvfbが(すでに)ディスプレイ:0で実行されているかどうかを確認する方法は?


17

タイトルがすべてを語っています。pgrep Xvfbトリックの半分しか行いません。ディスプレイ番号はわかりません。

回答:


23

あなたが何を達成しようとしているのかわかりませんが、「x display info」を実行することでXディスプレイが利用可能かどうかを確認できます。

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

注:ディスプレイにアクセスできない場合は、「無料」としても報告されます。別の方法は/tmp/.X0-lock、XサーバーのPIDファイルが含まれているかどうかを確認することです。

コマンドを表示する代わりに、より信頼性の高い方法は、バイナリに一致するプロセスをチェックすることです。

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私のためにトリックを行います、ありがとう!ところで :0で実行されているXvfbに基づいてDISPLAY環境変数を設定したい。
パウェウゴチッキ


Xvfbが使用するディスプレイ番号を取得しようとしていますか?私の答えと、使用中のようなものをpsコマンドを使用してみてくださいdisplay=":${processes##*:}";display="${%% *}"(それがために行われているコマンドで与えられていますと仮定ディスプレイ番号を取得するためにXorg、少なくともを)
Lekensteyn

でのみ実行する:0ので、単純なチェックで:0十分です。再度、感謝します!
パウェウゴチッキ

プロセスチェックに同意しません。プロセスは実行できますが、完全に初期化されていません。xdpyinfoはXvfbと通信していると想定しているため、より良いソリューションになると思われます。
ネイサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.