/run/shm
(以前)にディレクトリを作成/dev/shm
し、それをアプリケーションの一時ディレクトリとして使用するのが良い習慣ですか?
背景:私はファイルやディレクトリに対して多くのことを行うプログラムのブラックボックステストを書いています。テストごとに多くのファイルとディレクトリを作成し、プログラムを実行します。これにより、予想されるファイルとディレクトリのセットが作成され、diffを実行して比較します。現在約40のテストがありますが、すでに実行するのに2秒以上かかります。作業速度を上げるために、ある種のRAMディスク上のディレクトリでテストを実行したいと思います。
偶然発見したメモリディスクを勉強する一つの質問/dev/shm
答えはディレクトリを作成し、一時ディレクトリのように使用できることを示唆しています。もっと調べましたが、偶然発見しました。ウィキページDebianは、それを直接使用するのが間違っていると言います/dev/shm
。この機能を使用する必要がありますshm_*
。残念ながら、これらのshm_*
機能はシェルスクリプトでは機能しないようです。
今私は混乱しました。/run/shm
(以前)一時ディレクトリのように使用できますか?/dev/shm
答え1
/run
適切な権限がある限り、ディレクトリを使用することはまったく問題ありません。いくつかの最新のディストリビューションでは、/tmp
これはすでにインメモリ仮想ファイルシステムまたは内部ディレクトリへのシンボリックリンクです/run
。この場合(チェックインまたは/etc/fstab
入力できますmtab
)、/tmp
これを一時ディレクトリとして使用できます。
また、Debianの記事と混同しないでください。shm_*
プロセス間通信のために共有メモリセグメントを生成するために使用される機能。これらの機能を使用すると、2つ以上のプロセス間でメモリセグメントを共有し、同じデータを使用して通信またはコラボレーションできます。プロセスは、独自のアドレス空間にメモリセグメントを接続し、通常どおりそこから読み書きできます。カーネルは複雑さを扱います。これらの関数はシェル関数として使用することはできません(そしてシェルコンテキストではそれほど役に立ちません)。詳しくは をご確認くださいman 7 shm_overview
。この記事の要点は、どのプログラムも共有メモリセグメントを表す擬似ファイルを直接管理しないでください。代わりに、適切な機能を使用して共有メモリセグメントを作成、接続、削除する必要があります。