Jika Anda mengetahui satu ID proses berjalan di sesi pengguna, dan Anda memiliki izin untuk mengakses informasi proses itu, Anda dapat mengambil lingkungannya untuk DISPLAY
variabel:
cat /proc/$pid/environ | tr '\0' '\n' | grep ^DISPLAY=
Sebagai contoh, untuk mencantumkan semua tampilan utama yang digunakan oleh UID Anda di komputer saat ini, gunakan:
ps -u $(id -u) -o pid= \
| xargs -I PID -r cat /proc/PID/environ 2> /dev/null \
| tr '\0' '\n' \
| grep ^DISPLAY=: \
| sort -u
Jika Anda hanya masuk ke satu sesi X, di atas seharusnya hanya menampilkan satu baris dengan sesuatu seperti DISPLAY=:0
.
Di sesi X, Anda selalu dapat melihat DISPLAY
variabel lingkungan untuk memberi Anda nomor tampilan saat ini (echo $DISPLAY
).
Mencari tahu orang lain nomor tampilan lebih sulit. Menurut saya tidak ada cara standar untuk mendapatkan informasi selain bertanya kepada semua pengguna yang menampilkan mereka terhubung, jadi upaya apa pun untuk mendapatkan informasi ini memerlukan semacam peretasan dan tidak akan berfungsi untuk semua kasus.
Ada beberapa opsi yang diberikan di tempat lain di SE tetapi tidak akan berfungsi di Debian Wheezy, misalnya. Namun, daftar tampilan yang sedang aktif itu mudah, seperti yang ditunjukkan pada posting yang saya tautkan di atas:
ps axu | grep "X "
akan menampilkan proses X yang sedang berjalan, kira-kira seperti berikut:
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
Parameter pertama setelah /usr/bin/X
adalah nomor tampilan yang diawali titik dua, dan yang berikutnya menampilkan terminal virtual yang ditetapkan untuk sesi tersebut.
Namun, Anda mungkin mendapatkan jawaban dengan melihat daftar proses:
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
Lihat baris setelah /usr/bin/X
- saat sesi X dimulai, pengelola jendela biasanya dimulai sebagai pengguna yang menjadi pemilik sesi tersebut, dan di sana Anda mendapatkan nama pengguna. Dalam kasus saya user_1 menggunakan KDE dan user_2 menggunakan LXDE. Namun, solusi ini bergantung sepenuhnya pada fakta bahwa kernel kebetulan menugaskan ID proses baru dalam urutan menaik, yang mungkin tidak selalu demikian.
Jawaban ini memiliki satu kalimat, berdasarkan who
&terima
https://askubuntu.com/a/230838/152287
who
dapat disingkat sebagai w
Anda dapat membaca lebih lanjut di link termasuk one-liner untuk mendapatkan nilainya.
Berhasil. Berikut adalah output raspberrypi (rasbian), dimana nilai tampilan ada di kolom 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