¿Qué es `/ tmp / .X11-unix /`?

31

Le hice la misma pregunta a Google y no me gustaron los resultados que obtuve.

¿Qué es /tmp/.X11-unix/?

ThorSummoner
fuente
2
Wow, iba a preguntarte qué no te gustaba de ellos ... pero esos son algunos resultados bastante terribles.
derobert
¿Ejecutas Xvnc?
toxefa
2
@ py4on No lo creo, pregunto por mi interés en ejecutar aplicaciones gráficas dentro de un contenedor acoplable, a lo que esto menciona la conexión de este socket x11 al contenedor. stackoverflow.com/a/25334301/1695680
ThorSummoner
¿Terrible? De Verdad? En mi parte del mundo, el segundo resultado de búsqueda es unix.stackexchange.com/questions/57138 de este mismo sitio WWW.
JdeBP
3
@JdeBP, de hecho, pero el título de un extracto no te da ninguna razón para hacer clic en él, parece solucionar un problema aleatorio. Por supuesto, ahora aparece esta pregunta, por lo que Google está solucionado.
derobert

Respuestas:

21

En mi portátil Arch bastante actualizado, /tmp/.X11-unix/hay un directorio con una entrada: X0un socket de dominio Unix .

El servidor X11 (generalmente en Xorgestos días) se comunica con clientes como xtermFirefox, etc. a través de algún tipo de flujo confiable de bytes. Un socket de dominio Unix es probablemente un poco más seguro que un socket TCP abierto al mundo, y probablemente un poco más rápido, ya que el kernel lo hace todo y no tiene que depender de una tarjeta ethernet o inalámbrica.

Mi servidor X11 aparece como:

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

El "-nolisten tcp" evita que abra el puerto TCP 6000 para las comunicaciones.

El comando lsof -Upuede decirle qué procesos están utilizando qué sockets de dominio Unix. Veo Xorgcomo conectado a /tmp/.X11-unix/X0.

Bruce Ediger
fuente
1
¡Estaba a punto de vincularme con otra de sus respuestas! unix.stackexchange.com/a/20380/109083
toxefa
2
No es una trampa, pero dudo que un socket local de Unix tenga alguna ventaja de rendimiento sobre un socket TCP local (que no usa una interfaz de hardware y también es 100% kernel).
Ricitos
@goldilocks: una afirmación interesante.
Bruce Ediger
1
@goldilocks: consulte stackoverflow.com/questions/14973942/…
Max
1
@Max ¡Estoy corregido! Aunque no es por las razones citadas por Bruce, sino por la sobrecarga de la pila TCP del núcleo.
Ricitos
11

El servidor X tiene varias formas de comunicarse con clientes X (aplicaciones). El más común de usar, al menos en la misma máquina, es un socket de dominio Unix.

Un socket de dominio Unix es como los más conocidos de TCP, excepto que en lugar de conectarse a una dirección y puerto, se conecta a una ruta . Utiliza un archivo real (un archivo de socket) para conectarse.

El servidor X pone su socket en /tmp/.X11-unix:

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

Tenga sen cuenta el frente de los permisos, lo que significa que es un zócalo. Si tiene varios servidores X en ejecución, tendrá más de un archivo allí.

Al menos con las páginas de manual de Linux, se pueden encontrar más detalles sobre sockets (en general) man 7 socket. Los detalles sobre los sockets de dominio Unix están en man 7 unix. Tenga en cuenta que estas páginas están centradas en el programador.

derobert
fuente
1

/tmp/.X11-unix/X{n} es donde el servidor X coloca los zócalos de escucha AF_DOMAIN. Cerca del mismo lugar están /tmp/.X{n}-lock siendo cerraduras. Como se discute en https://bugzilla.redhat.com/show_bug.cgi?id=503181, este esquema no es bueno para FHS.

把 友情 留 在 无 盐
fuente