GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir le numéro d'affichage qui m'a été attribué par X

Si vous connaissez un ID de processus en cours d'exécution dans la session de l'utilisateur et que vous avez l'autorisation d'accéder aux informations de ce processus, vous pouvez grep son environnement pour le DISPLAY variables :

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

A titre d'exemple, pour lister tous les affichages principaux utilisés par votre UID sur le poste en cours, utilisez :

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

Si vous n'êtes connecté qu'à une seule session X, ce qui précède ne devrait afficher qu'une seule ligne avec quelque chose comme DISPLAY=:0 .


Dans la session X, vous pouvez toujours consulter le DISPLAY variable d'environnement pour obtenir votre numéro d'affichage actuel (echo $DISPLAY ).

Découvrir les autres afficher les chiffres est plus difficile. Je ne pense pas qu'il existe un moyen standard d'obtenir les informations autres que de demander à tous les utilisateurs à quel écran ils sont connectés, donc toute tentative d'obtenir ces informations nécessite une sorte de piratage et ne fonctionnera pas dans tous les cas.

Certaines options sont données ailleurs dans SE mais elles ne fonctionneront pas sur Debian Wheezy, par exemple. Cependant, répertorier les affichages actuellement actifs est facile, comme indiqué dans le post que j'ai lié ci-dessus :

ps axu | grep "X " vous montrera les processus X en cours d'exécution, quelque chose comme ceci :

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

Le premier paramètre après /usr/bin/X est le numéro d'affichage précédé de deux-points, et le suivant vous montre le terminal virtuel affecté à la session.

Cependant, vous obtiendrez peut-être une réponse en consultant la liste des processus :

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

Regardez les lignes après /usr/bin/X - lorsque la session X démarre, un gestionnaire de fenêtres est généralement démarré en tant qu'utilisateur auquel appartient la session, et vous obtenez le nom d'utilisateur. Dans mon cas, user_1 utilise KDE et user_2 utilise LXDE. Cependant, cette solution repose uniquement sur le fait que le noyau attribue de nouveaux ID de processus dans un ordre croissant, ce qui peut ne pas toujours être le cas.


Cette réponse a une ligne, basée sur who &grep

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

who peut être abrégé en w

vous pouvez en savoir plus sur le lien, y compris une ligne pour obtenir la valeur.

Ça marche. Voici la sortie raspberrypi (rasbian), où la valeur d'affichage est dans la colonne 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. Comment exécuter une commande en tant qu'administrateur système (racine) ?

  2. Comment obtenir le type de lecteur de carte interne ?

  3. Comment changer le mot de passe root mysql

  4. Comment obtenir uniquement le nombre de lignes d'un fichier

  5. Comment puis-je obtenir le nombre d'images dans une vidéo sur la ligne de commande Linux ?

Comment le bureau Linux s'est développé

Comment obtenir la taille d'un répertoire sous Linux

Comment tirer le meilleur parti de Qmmp 1.0

Comment trouver le numéro de port d'un service sous Linux

Comment obtenir le nombre de processeurs/cœurs sous Linux

Comment changer le mot de passe root sous Linux