Apa folder ini / run / user / 1000?

85

Apa folder ini: /run/user/1000di sistem Fedora saya dan apa fungsinya?

~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.2G   20K  1.2G   1% /run/user/1000

EDIT: 7 Juni 2019.

Dua jawaban saya tidak setuju pada direktori apa atau di mana file yang disimpan di tempat ini:

Patrick :

Sebelum systemd, aplikasi ini biasanya menyimpan file mereka di /tmp.

Dan lagi di sini:

/tmpadalah satu-satunya lokasi yang ditentukan oleh FHSyang lokal, dan dapat ditulis oleh semua pengguna.

Braiam :

Tujuan direktori ini pernah dilayani oleh /var/run. Secara umum, program dapat terus digunakan /var/rununtuk memenuhi persyaratan yang ditetapkan /rununtuk tujuan kompatibilitas mundur.

Dan lagi di sini:

Program yang telah bermigrasi untuk menggunakan /runharus menghentikan penggunaannya /var/run, kecuali sebagaimana disebutkan dalam bagian pada /var/run.

Jadi yang mana yang merupakan bapak /run/user/1000, mengapa tidak disebutkan dalam jawaban apa pun yang dikatakan orang lain tentang direktori yang digunakan sebelumnya /run/user.

sesuatu yang sesuatu
sumber
Tidak disebutkan dalam jawaban apa pun yang dikatakan orang lain tentang direktori yang digunakan sebelum / run / pengguna karena hanya satu yang benar-benar membahas hal ini. Jawaban Braiam membahas direktori yang digunakan sebelum / menjalankan daripada / jalankan / pengguna.
David Yockey
1
Jawaban untuk pertanyaan "bapak / run / user / 1000" disajikan sebagai pernyataan yang beralasan tetapi tidak berdasar oleh Patrick. Braiam tidak menjawab pertanyaan ini. Kemungkinan lokasi penyimpanan file yang digunakan oleh proses yang berjalan, yaitu file sementara, di masa lalu hanya dianggap sebagai direktori standar / tmp. Jika demikian, akan sulit untuk membuktikannya karena hanya sedikit orang memberikan catatan tertulis yang konvensional atau yang jelas. Untuk memberikan jawaban yang dibuktikan mungkin akan membutuhkan penggalian bersama ke dalam sejarah komputer.
David Yockey
Terima kasih atas masukan Anda
somethingSomething

Jawaban:

94

/run/user/$uiddibuat oleh pam_systemddan digunakan untuk menyimpan file yang digunakan dengan menjalankan proses untuk pengguna itu. Ini mungkin hal-hal seperti daemon keyring Anda, pulseaudio, dll.

Sebelum systemd , aplikasi ini biasanya menyimpan file mereka di /tmp. Mereka tidak dapat menggunakan lokasi /home/$userkarena direktori home sering dipasang di sistem file jaringan, dan file-file ini tidak boleh dibagi di antara host. /tmpadalah satu-satunya lokasi yang ditentukan oleh FHS yang bersifat lokal, dan dapat ditulis oleh semua pengguna.

Namun menyimpan semua file /tmpini bermasalah karena /tmpdapat ditulisi oleh semua orang, dan meskipun Anda dapat mengubah kepemilikan & mode pada file yang sedang dibuat, lebih sulit untuk dikerjakan.

Jadi systemd datang dan menciptakan /run/user/$uid. Direktori ini bersifat lokal untuk sistem dan hanya dapat diakses oleh pengguna target. Jadi aplikasi yang mencari untuk menyimpan file mereka secara lokal tidak perlu lagi khawatir tentang kontrol akses.
Itu juga membuat hal-hal baik dan teratur. Ketika pengguna keluar, dan tidak ada sesi aktif yang tersisa, pam_systemdakan menghapus /run/user/$uiddirektori keluar. Dengan berbagai file yang tersebar /tmp, Anda tidak dapat melakukan ini.

Patrick
sumber
18
Harus menyebutkan bahwa itu disebut $ XDG_RUNTIME_DIR, didokumentasikan di standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
o11c
Bagaimana jika: Saya sudah memulai proses perhitungan "latar belakang" nohup, dan menyimpan hasil / data antara dalam file temp. Dapatkah saya mengandalkannya tidak dihapus saat proses sedang berjalan, atau akan dihapus, dan proses dimulai dengan nohupakan kehilangan datanya?
imz - Ivan Zakharyaschev
Ini tidak mungkin dihapus, tetapi / run / user adalah sistem file tmpfs di fedora, jadi itu akan terbatas pada jumlah ruang yang dialokasikan untuk itu. Lihat output df di atas.
jsbillings
Bagaimana jika pidfile adalah layanan yang berjalan di bawah root. Haruskah PID berada di bawah / var / run atau / var / run / user / 0? Jika karena tidak ada sesi aktif, apakah akan dihapus?
TSG
11

Menurut draft terbaru FHS (File Hierarchy Standard) , / jalankan:

Direktori ini berisi data informasi sistem yang menggambarkan sistem sejak sistem di-boot. File di bawah direktori ini harus dihapus (dihapus atau dipotong seperlunya) di awal proses boot.

Tujuan direktori ini pernah dilayani oleh / var / run. Secara umum, program dapat terus menggunakan / var / run untuk memenuhi persyaratan yang ditetapkan untuk / menjalankan untuk tujuan kompatibilitas mundur. Program yang telah bermigrasi untuk menggunakan / menjalankan harus menghentikan penggunaan / var / run mereka, kecuali seperti yang disebutkan di bagian on / var / run.

Program mungkin memiliki subdirektori / run; ini dianjurkan untuk program yang menggunakan lebih dari satu file run-time. Pengguna juga dapat memiliki subdirektori / run, meskipun harus hati-hati membatasi hak akses untuk mencegah penggunaan / run itu sendiri dan subdirektori lain secara tidak sah.

Dalam hal /run/userdirektori, digunakan oleh berbagai layanan pengguna, seperti dconf, pulsa, systemd, dll. Yang membutuhkan tempat untuk file kunci dan soketnya. Ada banyak direktori karena berbagai pengguna yang terdaftar di sistem UID.

Braiam
sumber