Directory-Structure

關於離線臨時數據的約定

  • March 30, 2014

在編寫小型實用程序時,我有時希望在執行之間保留少量數據,通常用於記憶體目的,但不希望程序作為守護程序執行。有沒有這方面的約定?製作文件/tmp似乎很明顯,因為它通常保存在記憶體中,並且僅在關機時被擦除,但我很好奇是否還有其他方法。此外,是否有命名文件的約定/tmp

如果程序是系統管理員安裝的,偶爾抹掉數據也沒關係,在/var/cache. /var/cache系統管理員可以隨時刪除下面的文件,但通常不會刪除,除非系統磁碟空間不足。管理/var/cache/YOUR-DIRECTORY使其不會失控是您的應用程序的責任。

如果該程序是由系統管理員安裝的,並且在沒有您的應用程序控制的情況下絕不能刪除數據,請在/var/lib.

不要使用/tmp它:它可以(並且通常是)在重新啟動時擦除。/tmp僅適用於在應用程序的單獨呼叫之間未保存的數據。兩者都不要使用/var/tmp:雖然它通常不會在重新啟動時被擦除,但係統管理員可能會選擇隨時擦除它。

如果您的應用程序由單個使用者執行並且每個使用者都有自己的數據集,那麼文件必須位於使用者的主目錄中。除了使用名稱以.(“dot file”)開頭的文件的約定之外,沒有傳統的 Unix 標準來組織使用者主目錄中的文件。有一個現代標準,即XDG FreeDesktop 規範。對於記憶體數據(可以擦除而不影響性能以外的任何內容),在 下創建一個目錄$XDG_CACHE_HOME,預設為~/.cache. 對於應用程序數據,在主目錄下創建一個目錄$XDG_DATA_HOME,預設為~/.local/share或直接在主目錄下(在本例中以 開頭.)。

引用自:https://unix.stackexchange.com/questions/122164