Trong phiên X, bạn luôn có thể tham khảo DISPLAY
biến môi trường để lấy số hiển thị hiện tại ( echo $DISPLAY
).
Tìm ra số hiển thị của người khác khó khăn hơn. Tôi không nghĩ có bất kỳ cách tiêu chuẩn nào để nhận thông tin ngoài việc hỏi tất cả người dùng mà họ hiển thị được kết nối với họ, vì vậy mọi nỗ lực để có được thông tin này đều yêu cầu một số loại tin tặc và sẽ không hoạt động trong mọi trường hợp.
Có một số tùy chọn được đưa ra ở những nơi khác trong SE nhưng chúng sẽ không hoạt động trên Debian Wheezy. Tuy nhiên, việc liệt kê các màn hình hiện đang hoạt động rất dễ dàng, như thể hiện trong bài tôi đã liên kết ở trên:
ps axu | grep "X "
sẽ hiển thị cho bạn các quy trình X hiện đang chạy, đại loại như sau:
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
Tham số đầu tiên sau /usr/bin/X
là số hiển thị có tiền tố bởi dấu hai chấm và tham số tiếp theo hiển thị cho bạn thiết bị đầu cuối ảo được gán cho phiên.
Bạn có thể nhận được câu trả lời từ việc xem danh sách quy trình:
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
Nhìn vào các dòng sau /usr/bin/X
- khi phiên X bắt đầu, trình quản lý cửa sổ thường được bắt đầu với tư cách là người dùng của phiên và bạn có tên người dùng. Trong trường hợp của tôi, người dùng_1 đang sử dụng KDE và người dùng_2 đang sử dụng LXDE. Tuy nhiên, giải pháp này hoàn toàn dựa vào thực tế là hạt nhân tình cờ gán ID tiến trình mới theo trình tự tăng dần, có thể không phải luôn luôn như vậy.
;
trướcdone
.