gunakan `/ run / shm` (sebelumnya` / dev / shm`) sebagai direktori temp

9

Apakah praktik yang baik untuk membuat direktori di /run/shm(sebelumnya /dev/shm) dan menggunakannya seperti direktori temp untuk aplikasi?

Latar Belakang: Saya menulis tes kotak hitam untuk program yang mengerjakan banyak hal dengan file dan direktori. Untuk setiap tes saya membuat banyak file dan direktori dan kemudian menjalankan program dan kemudian membuat set file dan direktori yang diharapkan dan kemudian menjalankan diff untuk membandingkan. Saya sekarang memiliki sekitar 40 tes dan mereka sudah mengambil lebih dari 2 detik untuk menjalankan. Berharap untuk mempercepat, saya ingin menjalankan tes dalam direktori pada semacam ramdisk.

Meneliti tentang ram disk saya menemukan sebuah pertanyaan dengan jawaban yang menyatakan bahwa tidak apa-apa untuk membuat direktori /dev/shmdan menggunakannya seperti direktori temp. Meneliti lebih lanjut namun saya menemukan halaman wiki dari debian yang menyatakan bahwa itu adalah kesalahan untuk digunakan /dev/shmsecara langsung. Saya harus menggunakan shm_*fungsinya. Sayangnya shm_*fungsi tersebut sepertinya tidak tersedia untuk digunakan dalam skrip shell.

Sekarang saya bingung. Apakah boleh atau tidak menggunakan /run/shm(sebelumnya /dev/shm) seperti direktori temp?

lesmana
sumber
Ya, banyak pengguna juga memasang /tmpke memori bersama.
Eddy_Em
Saya akan membayangkan itu /tmplebih semantik. Jika pengguna Anda memiliki ram yang cukup untuk digunakan /dev/shmuntuk file sementara untuk mempercepat, maka mereka akan memasangnya di sana. Tetapi jika mereka tidak memiliki cukup ram, dan memasangnya di sana memperlambat komputer mereka dengan memaksa semua proses untuk menggunakan file swap, maka mereka akan menyimpan ram mereka untuk hal-hal yang lebih penting, dan menggunakan ruang disk biasa untuk sistem /tmpfile. Dengan kata lain, /tmplebih merdu.
Jack

Jawaban:

10

Tidak apa-apa menggunakan beberapa direktori /runselama Anda memiliki hak yang sesuai di dalamnya. Di beberapa distro modern, /tmpsudah ada sistem file virtual di memori atau symlink ke direktori di dalamnya /run. Jika ini adalah kasus Anda (Anda dapat memeriksanya di /etc/fstab, atau mengetik mtab), Anda dapat menggunakannya /tmpsebagai direktori sementara Anda.

Juga, jangan bingung dengan artikel dari Debian. shm_*fungsi digunakan untuk membuat segmen memori bersama untuk Komunikasi Antar-Proses. Dengan fungsi-fungsi tersebut, Anda dapat berbagi fragmen memori antara dua proses atau lebih untuk membuatnya berkomunikasi atau berkolaborasi menggunakan data yang sama. Proses memiliki segmen memori yang terpasang di ruang alamat mereka sendiri dan dapat membaca dan menulis di sana seperti biasa. Kernel membahas kompleksitasnya. Fungsi-fungsi itu tidak tersedia sebagai fungsi shell (dan tidak akan sangat berguna dalam konteks shell). Untuk informasi lebih lanjut, lihat man 7 shm_overview. Maksud artikel ini adalah bahwa tidak ada program yang harus mengelola secara langsung file pseudo yang mewakili segmen bersama, tetapi sebaliknya menggunakan fungsi yang sesuai untuk membuat, melampirkan, dan menghapus segmen memori bersama.

lororget
sumber
2
Tempat yang paling tepat di bawah ini /runmungkin /run/user/${UID}/.
Paul Fenney
1
Memang, pada sistem saya, pulseaudio dan systemd menginstal beberapa file seperti file pid di sana. Namun, / tmp masih akan menjadi lokasi pilihan saya untuk file sementara.
lgeorget
2
@PaulFenney: / run / user / $ UID juga dikenal sebagai $ XDG_RUNTIME_DIR
user2394284