O que é `/ tmp / .X11-unix /`?

31

Fiz a mesma pergunta ao Google e não gostei dos resultados que obtive.

O que é /tmp/.X11-unix/?

ThorSummoner
fonte
2
Uau, eu ia perguntar o que você não gostou neles ... mas esses são alguns resultados terríveis.
Derobert
Você executa o Xvnc?
toxefa
2
@ py4on Acho que não, pergunto por causa do meu interesse em executar aplicativos gráficos dentro de um contêiner de docker, para o qual isso menciona antecipar esse soquete x11 ao contêiner. stackoverflow.com/a/25334301/1695680
ThorSummoner
Terrivel? Sério? Na minha parte do mundo, o segundo resultado da pesquisa é unix.stackexchange.com/questions/57138 neste mesmo site da WWW.
JdeBP
3
@JdeBP, de fato, mas o trecho de um título não dá motivos para clicar nele - parece solucionar um problema aleatório. Claro que agora essa pergunta aparece, então o Google está corrigido.
derobert

Respostas:

21

No meu laptop Arch bastante atualizado, /tmp/.X11-unix/há um diretório com uma entrada :,X0 um soquete de domínio Unix .

O servidor X11 (normalmente Xorghoje em dia) se comunica com clientes como xtermFirefox, etc, através de algum tipo de fluxo confiável de bytes. Um soquete de domínio Unix é provavelmente um pouco mais seguro do que um soquete TCP aberto ao mundo, e provavelmente um pouco mais rápido, pois o kernel faz tudo e não precisa depender de uma placa Ethernet ou sem fio.

Meu 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

O "-nolisten tcp" impede a abertura da porta TCP 6000 para comunicações.

O comando lsof -Upode dizer quais processos estão usando quais soquetes de domínio Unix. Eu vejo Xorgcomo conectado /tmp/.X11-unix/X0.

Bruce Ediger
fonte
1
Estava prestes a criar um link para outra de suas respostas! unix.stackexchange.com/a/20380/109083
toxefa
2
Não é preciso escolher, mas duvido que um soquete local unix tenha vantagens de desempenho em relação a um soquete TCP local (que não usa uma interface de hardware e também é 100% do kernel).
precisa saber é o seguinte
@goldilocks - uma afirmação interessante.
precisa
1
@goldilocks: consulte stackoverflow.com/questions/14973942/…
Max
1
@ Max Estou corrigido! Embora não seja pelos motivos citados por Bruce, mas por causa da sobrecarga da pilha TCP do kernel.
GOLDILOCKS
11

O servidor X tem várias maneiras de se comunicar com clientes X (aplicativos). O mais comum de usar, pelo menos na mesma máquina, é um soquete de domínio Unix.

Um soquete de domínio Unix é como o TCP mais familiar, exceto que, em vez de se conectar a um endereço e porta, você se conecta a um caminho . Você usa um arquivo real (um arquivo de soquete) para se conectar.

O servidor X coloca seu soquete em /tmp/.X11-unix:

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

Observe o sna frente das permissões, o que significa que é um soquete. Se você tiver vários servidores X em execução, terá mais de um arquivo lá.

Pelo menos nas páginas de manual do Linux, mais detalhes sobre sockets (em geral) podem ser encontrados em man 7 socket. Detalhes sobre os soquetes do domínio Unix estão em man 7 unix. Observe que essas páginas são focadas no programador.

derobert
fonte
1

/tmp/.X11-unix/X{n} é onde o servidor X coloca os soquetes AF_DOMAIN em escuta. Perto do mesmo local estão /tmp/.X{n}-lock sendo bloqueios. Conforme discutido em https://bugzilla.redhat.com/show_bug.cgi?id=503181, esse esquema não é bom para a ESF.

把 友情 留 在 无 盐
fonte