小さなユーティリティを書くときには、少量のデータを保持したい場合があります。〜サイ実行。これは通常キャッシュ目的ですが、プログラムがデーモンとして実行されることを望まない場合です。これについての合意はありますか?ファイルを作成する/tmp
のは通常、メモリに保存され、閉じられたときにのみ消去されるため、当然のように見えますが、他の方法があるかどうか疑問に思います。また、ファイル名を指定するルールがありますか/tmp
?
答え1
システム管理者がプログラムをインストールし、時々データを削除しても構わない場合は、以下にディレクトリを作成してください。/var/cache
。以下のファイルはシステム管理者がいつでも削除できますが、/var/cache
通常はシステムのディスク容量が不足していない限り削除されません。これを制御できないように管理する/var/cache/YOUR-DIRECTORY
のはアプリケーションの責任です。
システム管理者がプログラムをインストールし、アプリケーション制御なしでデータを絶対に削除しないでください。/var/lib
。
この目的には使用しないでください/tmp
。再起動時に消去されることがあります(しばしばはい)。/tmp
アプリケーションへの個々の呼び出し間で保持されないデータにのみ適用されます。どちらかを使用しないでください/var/tmp
。通常、再起動時には削除されませんが、システム管理者はいつでも削除することを選択できます。
個々のユーザーがアプリケーションを実行し、各ユーザーが独自のデータセットを持っている場合、ファイルはユーザーのホームディレクトリになければなりません。以下を使用する以外に、ユーザーホームディレクトリのファイルを構成するための従来のUnix標準はありません。名前が.
("dotfile")で始まるファイル。現代的な基準がありますが、XDGFreeDesktopの仕様。キャッシュデータ(削除が可能でパフォーマンス以外には影響しません)の場合、デフォルトでに設定されている下にディレクトリを作成するか、$XDG_CACHE_HOME
ホーム~/.cache
ディレクトリの直下にディレクトリを作成します(この場合)。 (で始まる)。$XDG_DATA_HOME
~/.local/share
.
答え2
また、グローバルに書き込みが可能です/run
が、root権限が必要であるという慣例があるようです。同様の制限があります。/tmp
/run
/var
したがって、最良のオプションは、設定を介してスケジュールを/tmp
スケジュールすることです(ユーザーがランタイムディレクトリを指定できるようにする)。
命名規則に関する限り、ここは自由なグローバル空間のようです。目的の識別子を使用し、常識的な原則に従ってください。/tmp/stuff
似たような素晴らしいアイデアを持つ他の人に踏みつける可能性が高いので、これはおそらく良い考えではありません。
一部のアプリケーションは、Javaスタイルのドメインに基づく名前空間を使用することがわかりました.com.google.Chrome
。たとえば、ユニークで誰にでも理解できる限り、問題にはなりません。それがどこから来たのかについての手がかりを他の人に提供するならば、ボーナスポイントです。