ユーザーのセッションで実行されているプロセス ID が 1 つわかっていて、そのプロセスの情報にアクセスする権限がある場合は、DISPLAY
の環境を grep できます。 変数:
cat /proc/$pid/environ | tr '\0' '\n' | grep ^DISPLAY=
例として、現在のコンピューターで UID によって使用されているすべてのメイン ディスプレイを一覧表示するには、次を使用します。
ps -u $(id -u) -o pid= \
| xargs -I PID -r cat /proc/PID/environ 2> /dev/null \
| tr '\0' '\n' \
| grep ^DISPLAY=: \
| sort -u
1 つの X セッションにのみログインしている場合、上記は DISPLAY=:0
のような 1 行のみを出力するはずです。 .
X セッションでは、いつでも DISPLAY
を参照できます。 現在のディスプレイ番号を取得する環境変数 (echo $DISPLAY
).
他の人を見つける 表示数値は厳しいです。どのディスプレイに接続しているかをすべてのユーザーに尋ねる以外に、情報を取得する標準的な方法はないと思います。そのため、この情報を取得しようとすると何らかのハッカーが必要になり、すべての場合にうまくいくとは限りません。
SE の他の場所でいくつかのオプションが提供されていますが、たとえば Debian Wheezy では機能しません。ただし、上でリンクした投稿に示されているように、現在アクティブなディスプレイを一覧表示するのは簡単です。
ps axu | grep "X "
次のように、現在実行中の X プロセスが表示されます:
root 2354 0.0 0.5 23380 18292 tty8 Ss+ Sep15 2:36 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-7xlyuc
root 7901 0.0 0.3 17044 12072 tty7 Ss+ Sep14 5:58 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-wckh0a
/usr/bin/X
の後の最初のパラメーター はコロンで始まるディスプレイ番号で、次はセッションに割り当てられた仮想端末を示します。
ただし、プロセス リストを見れば答えが得られるかもしれません。
ps axu |grep -3 "X "
root 1990 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 1991 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 1992 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 2354 0.0 0.5 23380 18292 tty8 Ss+ Sep15 2:36 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-7xlyuc
root 2359 0.0 0.0 5264 2228 ? S Sep15 0:00 -:1
user_1 2378 0.0 0.0 4920 1348 ? Ss Sep15 0:00 /bin/sh /usr/bin/startkde
user_1 2443 0.0 0.0 3868 348 ? Ss Sep15 0:00 /usr/bin/ssh-agent env TMPDIR=/var/tmp /usr/bin/dbus-launch --exit-with-session /usr/bin/openbox-kde-session
--
root 7500 0.0 0.0 6460 1080 ? Ss Sep14 0:00 /usr/sbin/sshd
ntp 7841 0.0 0.0 5352 1760 ? Ss Sep14 0:17 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 108:111
root 7882 0.0 0.0 3964 716 ? Ss Sep14 0:00 /usr/bin/kdm -config /var/run/kdm/kdmrc
root 7901 0.0 0.3 17044 12072 tty7 Ss+ Sep14 5:59 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-wckh0a
root 7906 0.0 0.0 5260 2224 ? S Sep14 0:00 -:0
user_2 7925 0.0 0.0 12924 1560 ? Ssl Sep14 0:00 /usr/bin/lxsession -s LXDE -e LXDE
user_2 7990 0.0 0.0 3868 348 ? Ss Sep14 0:00 /usr/bin/ssh-agent env TMPDIR=/var/tmp /usr/bin/dbus-launch --exit-with-session /usr/bin/startlxde
/usr/bin/X
の後の行を見てください - X セッションが開始すると、ウィンドウ マネージャーは通常、セッションが属するユーザーとして開始され、そこでユーザー名を取得します。私の場合、user_1 は KDE を使用しており、user_2 は LXDE を使用しています。 ただし、この解決策は、カーネルがたまたま昇順で新しいプロセス ID を割り当てているという事実に完全に依存しており、常にそうであるとは限りません。
この回答には、 who
に基づくワンライナーがあります &grep
https://askubuntu.com/a/230838/152287
who
w
と省略できます
値を取得するためのワンライナーを含むリンクで詳細を読むことができます.
できます。これは raspberrypi (rasbian) の出力で、表示値は FROM 列にあります
[email protected]:~ $ w
19:19:30 up 8:15, 2 users, load average: 0.12, 0.11, 0.09
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
pi tty7 :0 11:04 8:15m 1:15 0.89s /usr/bin/lxsess
tim pts/0 192.168.0.29 19:17 0.00s 1.00s 0.09s w