Was ist `/ tmp / .X11-unix /`?

31

Ich habe Google die gleiche Frage gestellt und die Ergebnisse, die ich erhalten habe, nicht gefallen.

Was ist /tmp/.X11-unix/?

ThorSummoner
quelle
2
Wow, ich wollte dich fragen, was dir an ihnen nicht gefallen hat ... aber das sind einige ziemlich schreckliche Ergebnisse.
Derobert
Führen Sie Xvnc aus?
Toxefa
2
@py4on Ich glaube nicht, ich frage wegen meines Interesses, grafische Apps in einem Docker-Container auszuführen. stackoverflow.com/a/25334301/1695680
ThorSummoner
Furchtbar? "Ja wirklich?" In meinem Teil der Welt ist das zweite Suchergebnis unix.stackexchange.com/questions/57138 von genau dieser WWW-Site.
JdeBP,
3
@JdeBP in der Tat, aber der Titel und ein Auszug geben Ihnen keinen Grund, darauf zu klicken - es sieht so aus, als ob Sie ein zufälliges Problem beheben. Natürlich taucht jetzt diese Frage auf, also ist Google behoben.
Derobert

Antworten:

21

Auf meinem ziemlich aktuellen Arch-Laptop /tmp/.X11-unix/befindet sich ein Verzeichnis mit einem Eintrag:, X0einem Unix-Domain-Socket .

Der X11-Server (heutzutage üblich Xorg) kommuniziert mit Clients wie xtermFirefox usw. über eine Art zuverlässigen Bytestrom. Ein Unix-Domain-Socket ist wahrscheinlich ein bisschen sicherer als ein weltoffener TCP-Socket und wahrscheinlich ein bisschen schneller als der Kernel und muss sich nicht auf eine Ethernet- oder WLAN-Karte verlassen.

Mein X11-Server wird angezeigt als:

bediger    294   293  0 Apr09 tty1     01:23:26 /usr/lib/xorg-server/Xorg -nolisten tcp :0 vt1 -auth /tmp/serverauth.aK3Lrv5hMV

Das "-nolisten tcp" verhindert, dass der TCP-Port 6000 für die Kommunikation geöffnet wird.

Der Befehl lsof -Ukann Ihnen mitteilen, welche Prozesse welche Unix-Domain-Sockets verwenden. Ich sehe Xorgals verbunden /tmp/.X11-unix/X0.

Bruce Ediger
quelle
1
War gerade dabei, auf eine andere Ihrer Antworten zu verlinken! unix.stackexchange.com/a/20380/109083
toxefa
2
Nicht zu picken, aber ich bezweifle, dass ein lokaler Unix-Socket irgendwelche Leistungsvorteile gegenüber einem lokalen TCP-Socket hat (der keine Hardwareschnittstelle verwendet und auch zu 100% aus Kernel besteht).
Goldlöckchen
@goldilocks - eine interessante Behauptung.
Bruce Ediger
1
@goldilocks: siehe stackoverflow.com/questions/14973942/…
Max
1
@Max ich stehe korrigiert! Obwohl es nicht für die von Bruce zitierten Gründen, sondern aufgrund des Aufwands für den TCP - Stack des Kernels.
Goldlöckchen
11

Der X-Server bietet verschiedene Möglichkeiten zur Kommunikation mit X-Clients (Apps). Am häufigsten wird zumindest auf demselben Computer ein Unix-Domain-Socket verwendet.

Ein Unix-Domain-Socket ist mit den bekannteren TCP-Sockets vergleichbar, mit dem Unterschied, dass Sie keine Verbindung zu einer Adresse und einem Port herstellen, sondern eine Verbindung zu einem Pfad herstellen . Sie verwenden eine aktuelle Datei (eine Socket-Datei), um eine Verbindung herzustellen.

Der X-Server steckt seinen Socket in /tmp/.X11-unix:

$ ls -l /tmp/.X11-unix/X0 
srwxrwxrwx 1 root root 0 Dec 18 18:03 /tmp/.X11-unix/X0

Beachten Sie die svor den Berechtigungen, was bedeutet, es ist ein Socket. Wenn mehrere X-Server ausgeführt werden, ist mehr als eine Datei vorhanden.

Zumindest in den Linux-Hilfeseiten finden Sie weitere Informationen zu Sockets (im Allgemeinen) in man 7 socket. Details zu Unix-Domain-Sockets finden Sie in man 7 unix. Beachten Sie, dass diese Seiten programmiererorientiert sind.

derobert
quelle