Menü +

find ./ -type f -name '*source-string*'

X11 und den DISPLAY variable automatisch setzen

http://www-lehre.img.bio.uni-goettingen.de/edv/Einf_Inf/x11konf.htm

Konfiguration von X-11

In diesem Dokument finden sich Informationen zu:

  • Beschreibung

  • X-11 Klienten Konfigurieren

X-11

Beschreibung Ein X-11 Softwaresystem ist ein Vertreter des X-Window oder X-Konzeptes. Ziel von X ist die netztransparente und Rechnersystem- unabhängige Bedienungsumgebung für Arbeitsplatzrechner-Software. Die Bedienungsumgebung unterstützt mehrere überlappende Fenster auf einer Vielzahl von Arbeitsplatzrechnern.
Netzwerktranparenz bedeutet, daß X-Anwendungen, die auf einer CPU laufen, ihre Ausgabe auf einem Bildschirm zeigen können, der entweder mit derselben, oder einer anderen CPU verbunden ist.
Rechnersystemunabhängigkeit bedeutet, daß die Ausprägung der Bedienelemente auf allen Rechnern gleich ist und daß die Ausgabe auf jedem X-System erfolgen kann. Dies wird erreicht durch eine standardisierte Softwareschnittstelle und impliziert, daß auf dem System, das die Ausgabe darstellen soll, ein X-Server (Software) läuft. Auf diese Weise kannt die X-11 Anwendung (X-Client) mit dem X-Server kommunzieren.
Environmentvariable DISPLAY Auf Unix-Systemen wird der X-11 Anwendung durch die Environmentvariable DISPLAY mitgeteilt, auf welchem Rechner die Ausgabe erfolgen soll. Beispiel: Der Befehl echo $DISPLAY könnte liefern: ubmgpk.Uni-Molgen.gwdg.de:0.0 (Hinter dem Rechnernamen ist die Nummer des X-Servers und die Nummer des Bildschirms angegeben; meist 0.0). Manche X-Server lassen eine Ausgabe auf den Bildschirm nur für explizit mit Adresse einzutragende X-Klienten zu.

X-11 Klienten Konfigurieren

Voraussetzung Sie sind z.B. via Telnet auf einem Rechner im Unix-Cluster der GWDG eingeloggt.Sie benutzen die im Unix-Cluster als DEFAULT konfigurierte KORN-Shell.
Einmaliges Setzen der Environmentvariable DISPLAY 1.) Bestimmen Sie den Namen oder die IP-Adresse des Rechners, vor dem Sie gerade sitzen. Der Name wird im folgenden mit RECHNERNAME referenziert. Er kann z.B. ubmgpc.uni-molgen.gwdg.de oder 134.76.70.65 lauten. 2) Geben Sie im Fenster, das während der Telnetsitzung geöffnet ist, folgenden Befehl ein: export DISPLAY=RECHNERNAME:0.0
Konkretes Beispiel
Setzen und Anzeigen der Environmentvariablen
export DISPLAY=134.76.70.62:0 …die Displayvariable wird gesetzt und via export für alle weiteren Shells bekannt gemacht
gwdu20> echo $DISPLAY …Anzeige der Variablen mit echo,
mit vorangestelltem $ wird der Inhalt einer Variablen dereferenziert
MG-NTS3.UBMG.gwdg.de:0.0
Die Environmentvariable DISPLAY ist nun gesetzt und ist, da exportiert, auch in allen weiteren Shells, die während der Sitzung geöffnet werden, bekannt; nach dem Logout existiert sie jedoch nicht mehr.
Initialisierung während des Logins Bei jedem Starten einer KORN-Shell wird das benutzerspezifische File .kshrc ausgeführt. Es liegt nahe, dieses Skript um eine Kommando zu ergänzen, welches die DISPLAY-Variable dynamisch setzt.Im Unix-Cluster der GWDG leistet das Script /usr/users/rmerkl/scripts/setdisplay das Gewünschte.
Eintrag in .kshrc

Zunächst auf einem Rechner des Unix-Clusters einloggen. Displayvariable setzten, so wie oben angegeben. Mit xedit .kshrc & einen einfachen, X11-fähigen Editor starten.Die Zeile . /usr/users/rmerkl/scripts/setdisplay in .kshrc eintragen. Wichtig: Zwischen „.“ und dem ersten „/“ muß ein Leerzeichen eingefügt sein.Die Datei abspeichern, den Editor verlassen.

Mit chmod u+x .kshrc dem User das Ausführen (eXecute) der Datei erlauben.

Ausloggen und wieder Einloggen. Wurde alles korrekt ausgeführt, ist ab sofort die Display-Variable dynamisch gesetzt. Dies kann mittels echo $DISPLAY überprüft werden.

Einschränkung Das Script setdisplay kann nur erkennen, von welchem Rechner aus die Sitzung im Unixcluster unmittelbar gestartet wurde. Erfolgt das Einloggen ins Unix-Cluster über eine Kette von geschachtelten Telnetverbindungen, so wird der Rechner, auf dem die Ausgabe erfolgen soll, nicht erkannt.Im FallePC1->ServerA->ServerB->Unix-Cluster.würde die Adresse von ServerB in die DISPLAY-Variable übernommen und nicht die (vermutlich gewünschte) von PC1.
Probleme
  • Ausgabe von X11 schlägt fehl X-11 Server gestartet?
    Haben Sie auf dem Rechner, auf den die Ausgabe erfolgen soll, einen X-11 Server gestartet? Auf PCs ist dies z.B. das Programm eXeed.
  • Variable DISPLAY gesetzt?
    Überprüfen Sie mit echo $DISPLAY, ob die Environmentvariable gesetzt ist. Der Rechnername, bzw. die IP-Adresse muß mit den Daten des lokalen Arbeitsplatzrechners übereinstimmen.
  • Script .kshrc ausführbar?     Falls Sie die Variable dynamisch via .kshrc setzten, überprüfen Sie mit ls -al .kshrc, ob Sie das Script ausführen dürfen.-rwxr–r– 1 rmerkl UBMG 342 Feb 19 1998 .kshrc—| Das x gibt dem User rmerkl das Recht, das File auszuführen.
  • Ausgabe auf Arbeitsplatzrechner zugelassen?Insbesonder auf Unixsystemen kann die Ausgabe via X-11 per Konfiguration eingeschränkt sein. Änderungen der Konfiguration müssen mit dem Systemverwalter abgesprochen werden.
  • Blockiert Firewall das X-11 Protokoll?     Falls sich zwischen Ihrem Arbeitsplatzrechner und dem Server eine Firewall befindet, wäre ein Blockieren des X-11 Protokolls durch das Regelwerk der Firewall eine weitere Ursache für das Fehlschlagen der Ausgabe. Bitte erkundigen Sie sich beim Systemverwalter, ob ein derartiger Fall vorliegen könnte.
  • Plugin nicht InstalliertFür die Darstellung aller Dokumente, die dieser Server anbietet, bzw. die via Links referenziert werden, benötigen Sie die folgenden Plugins:

 

export DISPLAY="$(echo $SSH_CLIENT | awk '{print $1}'):0"

export DISPLAY="`host $(who em i | awk '{print $5}' | sed 's/)//g' | sed 's/(//g') | awk '{print $4}'`:0"


# URL: https://stackoverflow.com/questions/27646435/gtkwarning-could-not-open-display
# First of all, you didn't specify if you have a desktop environment (or X) installed on your server?
# Regardless of that, you can achieve headless setup for your spider by using xvfb:
# Xvfb or X virtual framebuffer is a display server implementing the X11 display server protocol. 
# In contrast to other display servers Xvfb performs all graphical operations in memory without showing any screen output. 
# From the point of view of the client, it acts exactly like any other X display server, serving requests and sending 
# events and errors as appropriate. However, no output is shown. This virtual server does not require the computer it 
# is running on to even have a screen or any input device.
# First, install xvfb on your server. Assuming you are using apt-get:
sudo apt-get install xvfb
# Now, run the xvfb service at a custom display number, like:

sudo Xvfb :5

# After that, you can run any application that requires X inside your virtual frame buffer by exporting the display number and running your application:

export DISPLAY=:5
run_my_application

# The DISPLAY is set only for the current terminal session, so keep that in mind when implementing automation for this step.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.