与えられたttyの表示番号を取得します

与えられたttyの表示番号を取得します

Debianシステムの特定のTTYでXが実行されているかどうかを確認し、その場合はディスプレイ番号(DISPLAY値)を検索できますか?

編集:TTYは非アクティブコンソールであり、必ずしもアクティブコンソールである必要はありません。機能を実装しようとしています。

Display()
{
    local tty="$1"
    ...
}

ベストアンサー1

プロセス名で検索できます。次に、プロセスで開かれたUnixドメインソケット(抽象的かもしれません)を見て、表示された番号を決定します。

pid=$(pgrep -xt "$tty" Xorg) &&
  lsof -aUp "$pid" | sed '\|.*X11-unix/X\([0-9]\{1,\}\) .*|!d;s//\1/;q'

lsofrootとして実行する必要があります。

あるいは、コマンドライン引数から表示番号を抽出することもできます(常に存在する場合)。

pgrep -axt "$tty" Xorg | sed -n 's/.*:\([0-9]\{1,\}\).*/\1/p'

おすすめ記事