GNU/Linux >> Znalost Linux >  >> Linux

Jak získat číslo displeje, které mi přidělil X

Pokud víte o jednom ID procesu spuštěném v relaci uživatele a máte oprávnění k přístupu k informacím tohoto procesu, můžete jeho prostředí nastavit pro DISPLAY proměnná:

cat /proc/$pid/environ | tr '\0' '\n' | grep ^DISPLAY=

Chcete-li například zobrazit seznam všech hlavních displejů používaných vaším UID na aktuálním počítači, použijte:

ps -u $(id -u) -o pid= \
    | xargs -I PID -r cat /proc/PID/environ 2> /dev/null \
    | tr '\0' '\n' \
    | grep ^DISPLAY=: \
    | sort -u

Pokud jste přihlášeni pouze k jedné relaci X, výše uvedený by měl vypsat pouze jeden řádek s něčím jako DISPLAY=:0 .


V X session se můžete vždy podívat na DISPLAY proměnná prostředí, abyste získali aktuální zobrazované číslo (echo $DISPLAY ).

Zjištění ostatních zobrazení čísel je tvrdší. Nemyslím si, že existuje jiný standardní způsob, jak získat informace, než se zeptat všech uživatelů, ke kterému displeji jsou připojeni, takže jakýkoli pokus získat tyto informace vyžaduje určitý druh hackingu a nebude fungovat ve všech případech.

Některé možnosti jsou uvedeny jinde v SE, ale například nebudou fungovat na Debian Wheezy. Vypsání aktuálně aktivních displejů je však snadné, jak ukazuje příspěvek, na který jsem odkazoval výše:

ps axu | grep "X " vám ukáže X procesů, které právě běží, něco jako následující:

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

První parametr po /usr/bin/X je číslo displeje s předponou dvojtečkou a další zobrazuje virtuální terminál přiřazený k relaci.

Odpověď možná získáte, když se podíváte na seznam procesů:

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

Podívejte se na řádky za /usr/bin/X - při spuštění X session se obvykle spustí správce oken jako uživatel, kterému relace patří, a tam získáte uživatelské jméno. V mém případě user_1 používá KDE a user_2 používá LXDE. Toto řešení však spoléhá čistě na skutečnost, že jádro náhodou přiřazuje nová ID procesů ve vzestupném pořadí, což nemusí být vždy případ.


Tato odpověď má jeden řádek, založený na who &grep

https://askubuntu.com/a/230838/152287

who může být zkráceno jako w

můžete si přečíst více na odkazu včetně jednoho řádku, abyste získali hodnotu.

Funguje to. Zde je výstup raspberrypi (rasbian), kde je zobrazená hodnota ve sloupci 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. Jak fungují vnitřnosti sudo?

  2. Jak získat počet CPU v Linuxu pomocí C?

  3. Jak získám počet snímků ve videu na příkazovém řádku linuxu?

  1. Jak spustit příkaz jako správce systému (root)?

  2. Jak bezpečně získat verzi Ksh?

  3. Jak získat typ interní čtečky karet?

  1. Jak změnit heslo root mysql

  2. Jak získat pouze počet řádků souboru

  3. Jak mohu *pouze* získat počet bajtů dostupných na disku v bash?