GNU/Linux >> Belajar Linux >  >> Linux

Cara mendapatkan nomor tampilan yang ditugaskan oleh X

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

Linux
  1. Bagaimana cara mendapatkan jumlah CPU di Linux menggunakan C?

  2. Cara mengubah kata sandi root mysql

  3. Bagaimana saya bisa mendapatkan nomor terakhir dari string di bash?

  1. Bagaimana Menjalankan Perintah Sebagai Administrator Sistem (root)?

  2. Bagaimana cara mendapatkan jumlah bingkai dalam video di baris perintah linux?

  3. Bagaimana cara mengatur jumlah snapshot yang harus dipertahankan oleh zfs-auto-snapshot?

  1. Bagaimana Cara Mendapatkan Versi Ksh dengan Aman?

  2. Bagaimana Cara Mendapatkan Jenis Pembaca Kartu Internal?

  3. Cara hanya mendapatkan jumlah baris file