質問: xから割り当てられたディスプレイ番号を取得する方法 x(7) manページからdisplay names from the user's perspective, every x server has a display name of the form: hostname:displaynumber.screennumber [...] displaynumber [...] to avoid confusion, each display on a machine is assigned a display number (beginning at 0) when the x server for that display is started. 割り当てられたディスプレイ番号を確認するにはどうすればよいですか?または、現在開いているディスプレイとそのユーザーをリストしますか?
回答: アミールの回答の小さなバリエーション。ps eは各コマンドの環境をスペースで区切って出力するため、直接sedに渡してdisplayを除外できるため、/ proc/pid/environを直接読み取るよりも簡単なコマンドが得られます。 (ただし、他のユーザーの環境を読み取るには、まだroot権限が必要です。)このコードは、xセッションを使用してログインしているすべてのユーザーの名前とそのdisplay番号を出力します。#!/bin/bash declare -a disps usrs usrs=() disps=() for i in $(users);do [[ $i = root ]] && continue # skip root usrs[$i]=1 done # unique names for u in "${!usrs[@]}"; do for i in $(sudo ps e -u "$u" | sed -rn 's/.* display=(:[0-9]*).*/\1/p');do disps[$i]=$u done done for d in "${!disps[@]}";do echo "user: ${disps[$d]}, display: $d" done