geçici dizin olarak `/ run / shm` (eski adıyla / dev / shm`) kullanın


9

/run/shm(Daha önce /dev/shm) içinde bir dizin oluşturmak ve bunu bir uygulama için geçici dizin gibi kullanmak iyi bir uygulama mudur?

Arka plan: Dosya ve dizinlerle çok şey yapan bir program için kara kutu testleri yazıyorum. Her test için çok fazla dosya ve dizin oluşturup programı çalıştırıyorum ve sonra beklenen dosya ve dizin kümesini oluşturuyorum ve sonra karşılaştırmak için diff çalıştırıyorum. Şu anda yaklaşık 40 testim var ve zaten 2 saniyeden fazla sürüyorlar. İşleri hızlandırmayı umuyorum Testleri bir çeşit ramdisk üzerinde çalıştırmak istiyorum.

RAM disk hakkında araştırma Ben bir dizin oluşturmak ve bir geçici dizin gibi kullanmak için uygun olduğunu belirten bir soru ile tökezledi /dev/shm. Biraz daha araştırıyorum, ancak debian'dan doğrudan kullanmak için bir hata olduğunu belirten bir wiki sayfasına tökezledim /dev/shm. shm_*İşlevleri kullanmalıyım . Ne yazık ki, shm_*işlevler bir kabuk betiğinde kullanılamıyor gibi görünüyor.

Şimdi kafam karıştı. Geçici dizin olarak /run/shm(eskiden /dev/shm) kullanmak iyi mi değil mi?


Evet, birçok kullanıcı da /tmppaylaşılan belleğe bağlanır .
Eddy_Em

Bunun /tmpdaha semantik olduğunu düşünürdüm . Kullanıcılarınız /dev/shmişleri hızlandırmak için geçici dosyalar kullanmak için yeterli ram'a sahipse, oraya yerleştirir. Ancak yeterli ramları yoksa ve buraya takılırsa, tüm işlemleri takas dosyaları kullanmaya zorlayarak bilgisayarlarını yavaşlatırsa, daha önemli şeyler için koçlarını kaydedecek ve /tmpdosya sistemi için normal disk alanını kullanacaklardır . Başka bir deyişle, /tmpdaha ayarlanabilir.
Jack

Yanıtlar:


10

/runÜzerinde uygun haklara sahip olduğunuz sürece bazı dizinleri kullanmak mükemmeldir . Bazı modern dağıtımlarda, /tmpzaten bellekteki bir sanal dosya sistemi veya içindeki bir dizine bir sembolik bağlantıdır /run. Durum buysa (bunu kontrol edebilir /etc/fstabveya yazabilirsiniz mtab), /tmpgeçici dizininiz olarak kullanabilirsiniz .

Ayrıca, Debian'ın makalesi ile karıştırmayın. shm_*işlevler, İşlemler Arası İletişim için paylaşılan bellek segmentleri oluşturmak için kullanılır. Bu işlevlerle, aynı verileri kullanarak iletişim kurmalarını veya ortak çalışma yapmalarını sağlamak için iki veya daha fazla işlem arasında bir bellek parçasını paylaşabilirsiniz. İşlemler, kendi adres alanlarına bellek segmentine sahiptir ve her zamanki gibi orada okuyabilir ve yazabilir. Çekirdek karmaşıklığı ele alır. Bu işlevler kabuk işlevleri olarak kullanılamaz (ve kabuk bağlamında çok yararlı olmaz). Daha fazla bilgi için bir göz atın man 7 shm_overview. Makalenin amacı, hiçbir programın doğrudan paylaşılan segmentleri temsil eden sözde dosyaları yönetmemesi, bunun yerine paylaşılan bellek segmentleri oluşturmak, eklemek ve silmek için uygun işlevleri kullanmasıdır.


2
Aşağıdaki en uygun yer /runolabilir /run/user/${UID}/.
Paul Fenney

1
Gerçekten, benim sistemimde, pulseaudio ve systemd pid dosyası gibi bazı dosyaları oraya yükler. Ancak, / tmp geçici dosyalar için yine de tercih ettiğim konumdur.
lgeorget

2
@PaulFenney: / run / user / $ UID olarak da bilinir $ XDG_RUNTIME_DIR
user2394284
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.