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/shm
dan menggunakannya seperti direktori temp. Meneliti lebih lanjut namun saya menemukan halaman wiki dari debian yang menyatakan bahwa itu adalah kesalahan untuk digunakan /dev/shm
secara 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?
sumber
/tmp
ke memori bersama./tmp
lebih semantik. Jika pengguna Anda memiliki ram yang cukup untuk digunakan/dev/shm
untuk 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/tmp
file. Dengan kata lain,/tmp
lebih merdu.Jawaban:
Tidak apa-apa menggunakan beberapa direktori
/run
selama Anda memiliki hak yang sesuai di dalamnya. Di beberapa distro modern,/tmp
sudah 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 mengetikmtab
), Anda dapat menggunakannya/tmp
sebagai 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, lihatman 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.sumber
/run
mungkin/run/user/${UID}/
.