Parfois, je rencontre des problèmes d'affichage et surtout je veux savoir quels fichiers ou processus utilisent la variable d'environnement DISPLAY.
Alors, comment lister tous les processus sur lesquels DISPLAY est défini?
Parfois, je rencontre des problèmes d'affichage et surtout je veux savoir quels fichiers ou processus utilisent la variable d'environnement DISPLAY.
Alors, comment lister tous les processus sur lesquels DISPLAY est défini?
Je suis arrivé à cette commande après de nombreuses recherches et essais:
for file in /proc/[0-9]*; do grep -ao 'DISPLAY=[^[:cntrl:]]*' $file/environ 2>/dev/null && grep -ao '(.*)' $file/stat; done | sed 'N;s/\n/\t/'
Un échantillon de la sortie est:
DISPLAY=:0 (unity-files-dae)
DISPLAY=:0 (unity-music-dae)
DISPLAY=:0 (unity-lens-vide)
DISPLAY=:0 (zeitgeist-daemo)
DISPLAY=:0 (zeitgeist-fts)
DISPLAY=:0 (zeitgeist-datah)
DISPLAY=:0 (cat)
DISPLAY=:0 (unity-scope-vid)
DISPLAY=:0 (unity-musicstor)
DISPLAY=:0 (dconf-service)
DISPLAY=:0 (gdu-notificatio)
DISPLAY=:0 (telepathy-indic)
DISPLAY=:0 (mission-control)
DISPLAY=:0 (goa-daemon)
DISPLAY=:0 (VBoxXPCOMIPCD)
DISPLAY
dans chaque fichier. Ces fichiers sont réellement dans les processus en cours d'exécution, donc chaque fichier contenant le motDISPLAY
signifie que ce processus l'utilise. Vous ne pouvez pas obtenir le nom complet du processus car les noms dans la sortie sont les noms de fichiers fondés/proc
, vous ne pouvez donc pas en savoir plus que ceux proposés.Avec une petite modification du script Maythux, nous pouvons également obtenir le PID des processus en utilisant la variable DISPLAY.
La sortie est:
la source
C'est un script de ligne de commande assez astucieux! Je vais faire une copie de ce script au cas où je devrais le pirater pour trouver autre chose.
Idéalement, tous les processus actuels qui correspondent aux programmes que vous exécutez sur la machine locale, après la connexion, porteront la même variable d'affichage que votre première console pts ouverte (session pseudo-terminale).
Par exemple, lorsque vous ouvrez votre première session de terminal (gnome-terminal) et exécutez la commande who ou w, vous remarquerez une sortie comme celle-ci:
ou certaines personnes pourraient ressembler à ceci (mais ce n'est pas votre cas)
en utilisant le gestionnaire d'affichage léger si la variable DISPLAY est définie différemment pour l'exécution des shells après la connexion (par exemple: 0,0), alors la variable d'environnement pour DISPLAY produirait la même variable d'affichage que la variable d'affichage post-connexion des premiers points ouverts (: 0.0), mais la variable hôte, lors de la connexion, serait toujours (: 0).
En faisant écho à la variable DISPLAY ou en exécutant set piped to less comme indiqué ci-dessous:
ou
vous pouvez également vérifier la variable d'affichage actuelle de vos sessions et voir ce qu'elle est définie pour l'exécution des shells après la connexion. Donc, fondamentalement, la variable d'affichage des processus que vous exécutez aura la même variable d'affichage que vos premiers points ouverts, après la connexion.
La sortie du script que vous avez publiée suggère que vos premiers pts ouverts auront la même variable d'affichage que la connexion de votre gestionnaire d'affichage, dans ce cas: 0.
Maintenant, pour le deuxième exemple, la sortie ressemblerait à ceci:
Aussi pour une lecture supplémentaire, vous pouvez consulter les pages de manuel de ptmx
Cela pourrait vous donner un aperçu de la relation maître-esclave des pseudo-terminaux.
J'espère que ça aide!
Aussi où avez-vous obtenu ce script?
la source