~によるとFHS-3.0、/tmp
一時ファイル用、/run
ランタイム変数データ用。/run
のデータは、次回の起動時に削除する必要があり、必要はありません/tmp
。ただし、プログラムは、次回プログラムの開始時にデータを/tmp
使用できるとは想定できません。これらすべてが私と非常に似ているようです。
それでは、2つの違いは何ですか?プログラムは、どの基準に従って一時データを入れるか取り出すかを決定する/tmp
必要がありますか/run
?
FHSデータによると:
プログラムにはサブディレクトリがあります
/run
。これは、複数のランタイムファイルを使用するプログラムにお勧めします。
これは、「システムプログラム」と「一般プログラム」の区別が標準ではなく、プログラムのライフサイクル(例えば、長期実行プロセス対短期実行プロセス)でもないことを意味します。
FHSは以下のような根拠を示していませんが、遅すぎて設置してダーティトリックを早期に提供する必要がある問題を/run
克服するために導入されました。しかし、今や導入され、FHSで説明されているので、両方を持つ明確な理由がないようです。/var
/var/run
/run
/run
/tmp
ベストアンサー1
カタログ/tmp
と/usr/tmp
(以降/var/tmp
)は、すべてとすべての人のためのゴミ箱でした。これらのディレクトリ内のファイルに対する唯一の保護メカニズムは、所有者がファイルを削除または名前変更することを制限する固定ビットです。 marcelmがコメントで指摘したように、原則として、誰かがサービスが使用する名前(たとえば、nginx.pid
または)でファイルを生成するのを防ぐ方法はありませんsshd.pid
。 (しかし、実際には、起動スクリプトが最初にこれらの偽のファイルを削除する可能性があります。)
/run
ロック、ソケット、PIDファイルなどの長寿命の非持続的なランタイムデータを提供するように構築されています。一般の人々が書くことができないため、サービスの実行時データを複雑でクリーンアップ/tmp
する努力から保護します。事実:私が実行している2つのディストリビューション(悪意のあるものではありません)は755の権限を持ち/run
(/tmp
その問題/var/tmp
については/dev/shm
)1777の権限を持っています。