我應該在哪裡儲存我的應用程序文件(數據、記憶體、日誌、崩潰等)
儘管我對這個主題進行了一些研究,但我無法獲得我想要的確切資訊。實際上,沒有完全公開,每個人都以不同的方式接近。
對於:文件系統層次結構標準
我應該將我的文件儲存在:
- 臨時文件:
/var/temp/app_name/*
或/temp/app_name/*
- 記憶體文件:
/var/cache/app_name/*
- 配置文件:
~/.config/app_name/*
- 日誌文件:
/var/log/app_name/*
- 數據文件(數據庫等):
???
**Q1:**對於最近的系統,這是正確的方法嗎?
對於此處解釋
XDG
的標準:
- 臨時文件:
???
或/temp/app_name/*
- 記憶體文件:
~/.cache/app_name/*
- 配置文件:
~/.config/app_name/*
- 日誌文件:
???
- 數據文件(數據庫等):
???
我不明白為什麼我們將記憶體文件儲存在
~/.cache
. 這對我來說沒有任何意義,因為有一個名為的內置記憶體文件夾/var/cache
在那種情況下,我很困惑。在我調查的每個地方,都有不同的方法。
**Q2:**對於純 Linux 發行版(不使用 $XDG),我們應該將文件(數據、日誌、臨時文件、配置等)放在哪裡來創建應用程序?
**Q3:**有些應用程序使用Linux結構,但有些使用該
XDG
結構。他們如何選擇這個?根據什麼情況?$XDG
如果我們使用它們,它們是否使用環境變數?根據上述情況,我的
env | grep -i "XDG"
輸出:XDG_VTNR=1 XDG_SESSION_ID=1 XDG_DATA_DIRS=/home/furkan/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share XDG_RUNTIME_DIR=/run/user/1000 XDG_SEAT=seat0
PS: 我不知道我展示的部分
???
您的部分困惑可能是使用者應用程序和系統應用程序之間的區別。
因此,例如,
apache
不作為最終使用者執行(“Harry”通常不執行 Apache;它從系統啟動腳本執行 - systemd 或 init 或然而)。這類應用程序通常會遵循文件系統標準並將日誌文件儲存在 中/var/log
,配置文件儲存在/etc
等等。類似地,系統管理員執行的
root
旨在影響整個機器的命令(例如apt
或yum
)也遵循文件系統標準。然而,為最終使用者執行而設計的應用程序(例如網路瀏覽器和其他桌面應用程序)遵循 XDG 標準。這裡“哈利”有自己的個人記憶體,與“朱莉”不同;他們訪問不同的網站,因此記憶體了不同的頁面。同樣,Harry 可能將他的桌面配置為與 Julie 不同,因此配置將在該
~/.config
區域中。某些位置(例如
/tmp
)旨在由所有使用者共享,因此即使是桌面應用程序也可以使用它們……但即使在這裡/run/user/
,有時也會使用更現代的結構。