Hoe kan ik een weergave specificeren?

Als ik sommige programma’s via SSH uitvoer, zoals firefox &, krijg ik een foutmelding

Error: no display specified 

Ik zou graag veel schermen willen openen, met nog steeds de stdoutvan elk programma.

Eerste vraag:hoe kan ik de weergave specificeren om een programma met veel weergaven te krijgen?

Pablo Santa Cruz geeft me de volgende code als oplossing.
Ik begrijp het niet.

$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &

Wat zijn yourmachineen yourdomain.comin de opdracht?


Antwoord 1, autoriteit 100%

De manier waarop X werkt, is dezelfde als de manier waarop elk netwerkprogramma werkt. Je hebt een server met een bepaalde beschrijving (in dit geval de X-displayserver) die op een specifieke machine draait, en je hebt X-clients (zoals Firefox) die proberen verbinding te maken met die server om hun informatie weer te geven.

Vaak (op “thuis”-machines) draaien de client en server op dezelfde box en is er maar één server, maar X is krachtig genoeg om dit niet te hoeven doen. Het is vanaf het begin gebouwd met de server/client-scheiding ingebouwd.

Hiermee kun je zulke wonderbaarlijke dingen doen, zoals inloggen op je box (in tekstmodus) halverwege de planeet, vertellen dat de weergaveserver de box is waar je momenteel op zit en, voila, de vensters beginnen plotseling lokaal verschijnen.

Om een client met een gebruiker te laten communiceren, moet hij weten hoe hij de server vindt. Er zijn een aantal manieren om dit te doen. Veel clients staan de optie -displayof --displaytoe om het te specificeren:

xeyes -display paxbox1.paxco.com:0.0

Velen zullen de omgevingsvariabele DISPLAYgebruiken als er niet specifiek een weergave wordt gegeven. U kunt deze variabele instellen zoals elke andere:

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting)

Het eerste deel van de variabele DISPLAYis alleen het adres van de display-servermachine. Het volgt dezelfde regel als elk ander IP-adres; het kan een oplosbare DNS-naam zijn (inclusief localhost) of een specifiek IP-adres (zoals 192.168.10.55).

Het tweede deel is X-specifiek. Het geeft het X “display” (X-server) nummer en schermnummer om te gebruiken. De eerste (weergavenummer) verwijst over het algemeen naar een groep apparaten met een of meer schermen, maar met een enkel toetsenbord en muis (d.w.z. één invoerstroom). Het schermnummer geeft over het algemeen het specifieke scherm binnen die groep aan.

Een voorbeeld zou zijn:

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

Hier heb je een enkele machine (paxbox1.paxco.com) met twee weergaveservers. De eerste heeft vier schermen en de tweede heeft er twee. De mogelijkheden zijn dan:

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

afhankelijk van waar u wilt dat uw werkelijke vensters verschijnen en welke invoerapparaten u wilt gebruiken.


Antwoord 2, autoriteit 29%

$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &

Antwoord 3, autoriteit 24%

Als u via SSH verbinding maakt met een andere machine, kunt u X-Forwarding in SSH inschakelen, zodat X-vensters versleuteld via de SSH-tunnel terug naar uw machine worden doorgestuurd. Je kunt X-forwarding inschakelen door -Xtoe te voegen aan de ssh-opdrachtregel of door ForwardX11 yesin te stellen in je SSH-configuratiebestand.

Om te controleren of X-Forwarding succesvol is ingesteld (de server staat het misschien niet toe), probeer gewoon of echo $DISPLAYiets als localhost:10.0uitvoert.


Antwoord 4, autoriteit 17%

Probeer

export DISPLAY=localhost:0.0

Antwoord 5, autoriteit 17%

log in op uw server via

ssh -X root@yourIP

bewerk het bestand /etc/ssh/sshd_config en voeg deze regel eraan toe.

X11UseLocalhost no

Herstart sshd. voor CentOS (controleer uw distributie)

/sbin/service sshd restart

controleer je DISPLAY

echo $DISPLAY

je zou dit moeten zien

yourIP:10.0

Geniet

firefox

voor meer informatie


Antwoord 6, autoriteit 11%

Probeer $DISPLAY NIET handmatig in te stellen wanneer u verbinding maakt via SSH.
Als je verbinding maakt via SSH -Xen $DISPLAY blijft leeg, betekent dit meestal dat er geen versleuteld kanaal tot stand kan worden gebracht.

Hoogstwaarschijnlijk mist u het pakket xauthof xorg-x11-xauth. Probeer het op de externe machine te installeren met:

sudo apt-get install xauth

of

sudo apt-get install xorg-x11-xauth

Beëindig daarna en herstart je SSH-verbinding. Vergeet niet SSH -Xte gebruiken, zodat X Window-uitvoer naar uw lokale computer wordt doorgestuurd.

Probeer nu opnieuw echo $DISPLAYom te zien of $DISPLAY automatisch is ingesteld door de SSH-demon. Het zou u een regel moeten tonen met een IP-adres en een poort.


Antwoord 7, autoriteit 9%

Ik kwam een soortgelijk probleem tegen, dus misschien helpt dit antwoord iemand.

De reden voor de Error: no display specifiedis dat Firefox wordt gestart, maar dat er geen X-server (GUI) draait op de externe host. U kunt X11-forwarding gebruiken om Firefox op de externe host uit te voeren, maar het op uw lokale host weergeven. Op Mac OS X moet je XQuartzdownloaden om X11-forwarding te gebruiken. Zonder dit heb je geen $DISPLAYvariabele set, dus als je probeert en echo $DISPLAY, zal het leeg zijn.


Antwoord 8, autoriteit 8%

Probeer het pakket xorg-x11-xauthte installeren.


Antwoord 9, autoriteit 5%

Ik heb vandaag een soortgelijk probleem gehad. Dus, hier is een eenvoudige oplossing:
Terwijl u SSH op de machine uitvoert, voegt u gewoon CtrlYtoe.

ssh user@ip_address -Y

Typ na het inloggen firefox &.
En je bent klaar om te gaan.


Antwoord 10

Zelfs ik had hetzelfde in CentOS 6.8.

yum reinstall xorg*

Beëindig je huidige sessie en open een andere sessie in een tool zoals mobiXterm. Zorg ervoor dat sessie X11 doorsturen heeft ingeschakeld in de tool.


Antwoord 11

Ik via vnc om de X11 beter te begrijpen.
Om de weergave te specificeren om een programma met veel weergaven te krijgen,
export DISPLAY=IP:DisplayNum.ScreenNum

Bijvoorbeeld

vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY 
export DISPLAY=:2  # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY

Antwoord 12

Ik gebruik de xming-server voordat ik firefox typ, gebruik de volgende opdracht:
export DISPLAY=0:0

Other episodes