Aus X (7) Manpages
DISPLAY NAMES
From the user's perspective, every X server has a display name of the form:
hostname:displaynumber.screennumber
[...]
displaynumber
[...]
To avoid confusion, each display on a machine is assigned a display
number (beginning at 0) when the X server for that display is started.
Wie finde ich die mir zugewiesene Anzeigenummer?
Oder aktuell geöffnete Displays und deren Benutzer auflisten?
;
vor dem hinzufügendone
.In der X-Sitzung können Sie immer die
DISPLAY
Umgebungsvariable konsultieren , um die aktuelle Anzeigenummer zu erhalten (echo $DISPLAY
).Das Herausfinden der Anzeigenummern anderer ist schwieriger. Ich glaube nicht, dass es eine Standardmethode gibt, um die Informationen abzurufen, außer dass alle Benutzer gefragt werden, mit welchem Display sie verbunden sind. Daher erfordert jeder Versuch, diese Informationen abzurufen, eine Art Hackerangriff und funktioniert nicht in allen Fällen.
Es gibt einige Optionen, die an anderer Stelle in SE angegeben sind, aber sie funktionieren beispielsweise nicht für Debian Wheezy. Das Auflisten der derzeit aktiven Anzeigen ist jedoch einfach, wie in dem Beitrag gezeigt, den ich oben verlinkt habe:
ps axu | grep "X "
zeigt Ihnen die aktuell ausgeführten X-Prozesse, etwa wie folgt:Der erste Parameter nach
/usr/bin/X
ist die durch Doppelpunkt gekennzeichnete Anzeigenummer, und der nächste zeigt Ihnen das der Sitzung zugewiesene virtuelle Terminal.Möglicherweise erhalten Sie eine Antwort, wenn Sie sich die Prozessliste ansehen:
ps axu |grep -3 "X "
Schauen Sie sich die folgenden Zeilen an
/usr/bin/X
: Beim Start der X-Sitzung wird in der Regel ein Fenstermanager als der Benutzer gestartet, zu dem die Sitzung gehört, und dort erhalten Sie den Benutzernamen. In meinem Fall verwendet Benutzer_1 KDE und Benutzer_2 LXDE. Diese Lösung beruht jedoch nur auf der Tatsache, dass der Kernel zufällig neue Prozess-IDs in aufsteigender Reihenfolge zuweist, was möglicherweise nicht immer der Fall ist.quelle
/proc/$pid/environ
, wie incat /proc/$$/environ | tr '\0' '\n' | grep '^DISPLAY='
. Siehe meine Antwort für ein anderes Verwendungsbeispiel.Diese Antwort ist einzeilig und basiert auf
who
& grep/ubuntu//a/230838/152287
who
kann abgekürzt werden alsw
Sie können mehr unter dem Link lesen, einschließlich eines Einzeilers, um den Wert zu erhalten.
Es klappt. Hier ist die Ausgabe von raspberrypi (rasbian), wobei der Anzeigewert in der FROM-Spalte steht
quelle
https://gitorious.org/termsql/pages/Home
termsql
ist ein gutes Werkzeug, um solche Informationen zu extrahieren.Das Herausfinden der DISPLAY-Nummer ist eines der Beispiele:
(Setzen Sie die Umgebungsvariable DISPLAY auf die Anzeige, auf der X gerade ausgeführt wird, vorausgesetzt, die X-Binärdatei wird aufgerufen.
Xorg.bin
)quelle
Eine kleine Variation von Amirs Antwort.
ps e
sed
Gibt die Umgebung jedes Befehls mit einem getrennten Leerzeichen aus, sodass sie direkt an das Herausfiltern von DISPLAY übergeben werden kann. Dies ergibt einen einfacheren Befehl als das direkte Lesen von / proc / PID / environ. (Um die Umgebungen anderer Benutzer lesen zu können, benötigen Sie jedoch weiterhin Root-Berechtigungen.)Dieser Code gibt die Namen aller angemeldeten Benutzer mit X-Sitzungen und deren DISPLAY-Nummern aus:
quelle