Apa itu `/ tmp / .X11-unix /`?

31

Saya mengajukan pertanyaan yang sama kepada Google dan tidak menyukai hasil yang saya dapatkan.

Apa /tmp/.X11-unix/?

ThorSummoner
sumber
2
Wow, saya akan bertanya kepada Anda apa yang tidak Anda sukai tentang mereka ... tetapi itu adalah beberapa hasil yang sangat buruk.
derobert
Apakah Anda menjalankan Xvnc?
toxefa
2
@ py4on Saya rasa tidak, saya bertanya karena minat saya dalam menjalankan aplikasi grafis di dalam wadah buruh pelabuhan, di mana ini menyebutkan untuk memasang soket x11 ini ke wadah. stackoverflow.com/a/25334301/1695680
ThorSummoner
Buruk? Sangat? Di bagian dunia saya, hasil pencarian kedua adalah unix.stackexchange.com/questions/57138 dari situs WWW ini.
JdeBP
3
@ JdeBP memang, tetapi judul kutipan tidak memberi Anda alasan untuk mengkliknya — sepertinya pemecahan masalah beberapa masalah acak. Tentu saja sekarang pertanyaan ini muncul, jadi Google diperbaiki.
derobert

Jawaban:

21

Pada cukup up-to-date Arch laptop saya, /tmp/.X11-unix/adalah direktori dengan satu entri: X0, sebuah Unix-domain socket .

Server X11 (biasanya Xorghari ini) berkomunikasi dengan klien seperti xterm, firefox, dll melalui semacam aliran byte yang dapat diandalkan. Socket domain Unix mungkin sedikit lebih aman daripada soket TCP yang terbuka untuk dunia, dan mungkin sedikit lebih cepat, karena kernel melakukan semuanya, dan tidak harus bergantung pada ethernet atau kartu nirkabel.

Server X11 saya muncul sebagai:

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

"-Nolisten tcp" mencegahnya dari membuka port TCP 6000 untuk komunikasi.

Perintah lsof -Udapat memberi tahu Anda proses apa yang menggunakan soket domain Unix mana. Saya melihat Xorgterhubung /tmp/.X11-unix/X0.

Bruce Ediger
sumber
1
Baru saja akan menautkan ke jawaban Anda yang lain! unix.stackexchange.com/a/20380/109083
toxefa
2
Bukan untuk nitpick tapi saya ragu soket lokal unix memiliki kelebihan kinerja dibandingkan soket TCP lokal (yang tidak menggunakan antarmuka perangkat keras, dan juga 100% kernel).
goldilocks
@goldilocks - pernyataan yang menarik.
Bruce Ediger
1
@goldilocks: lihat stackoverflow.com/questions/14973942/...
Max
1
@ Max Aku berdiri dikoreksi! Meskipun bukan karena alasan yang dikutip oleh Bruce, tetapi karena overhead untuk stack TCP kernel.
goldilocks
11

Server X memiliki beberapa cara untuk berkomunikasi dengan klien X (aplikasi). Yang paling umum digunakan, setidaknya pada mesin yang sama, adalah soket Unix-domain.

Socket Unix-domain seperti yang lebih dikenal TCP, kecuali bahwa alih-alih menyambungkan ke alamat dan port, Anda terhubung ke jalur . Anda menggunakan file aktual (file socket) untuk menghubungkan.

Server X menempatkan soketnya di /tmp/.X11-unix:

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

Perhatikan sdi depan izin, yang artinya soket. Jika Anda memiliki beberapa server X yang berjalan, Anda akan memiliki lebih dari satu file di sana.

Setidaknya dengan manual Linux, detail lebih lanjut tentang soket (secara umum) dapat ditemukan di man 7 socket. Rincian tentang soket Unix-domain ada di man 7 unix. Perhatikan bahwa halaman-halaman ini berfokus pada programmer.

derobert
sumber
1

/tmp/.X11-unix/X{n} adalah tempat server X menaruh soket AF_DOMAIN yang sedang mendengarkan. Dekat tempat yang sama adalah /tmp/.X{n}-lock sedang terkunci. Seperti yang dibahas dalam https://bugzilla.redhat.com/show_bug.cgi?id=503181 skema ini tidak bagus untuk FHS.

把 友情 留 在 无 盐
sumber