
Linux 是否有一個標準的通用臨時目錄,就像 Windows 的C:\Temp
資料夾一樣?如果有,它位於哪裡?我發現tmp
關於以程式設計方式找出目錄的SO問題,但我想提前在 XML 設定檔中設定臨時位置。
答案1
這檔案系統層次結構標準3.0版本說:
/tmp :暫存文件
該
/tmp
目錄必須可供需要暫存檔案的程式使用。程式不得假設在
/tmp
程式呼叫之間保留任何檔案或目錄。基本原理
IEEE 標準 POSIX.1-2008 列出了與上述部分類似的要求。儘管可以以特定於網站的方式刪除 中儲存的數據
/tmp
,但建議/tmp
在系統啟動時刪除 中的檔案和目錄。FHS 根據歷史先例和慣例添加了此建議,但並未將其作為要求,因為系統管理不在本標準的範圍內。
/var/tmp :系統重新啟動之間保留的暫存文件
此
/var/tmp
目錄可供需要在系統重新啟動之間保留的暫存檔案或目錄的程式使用。因此,儲存在 中的/var/tmp
資料比 中的資料更持久/tmp
。
/var/tmp
系統啟動時不得刪除位於的檔案和目錄。儘管 中儲存的資料/var/tmp
通常以特定於網站的方式刪除,但建議刪除的頻率低於/tmp
.
還有The Open Group 基本規格第 7 期,環境變量提到以下內容:
TMPDIR
此變數應表示可供需要建立暫存檔案的位置的程式所使用的目錄的路徑名。
系統對此也有發言權:
/tmp/
和/var/tmp/
Linux 系統為暫存檔案提供了兩個全域可寫入的目錄。前者通常處於開啟狀態臨時檔案系統因此由 RAM/swap 支持,並在每次重新啟動時刷新。後者通常是一個適當的、持久的文件系統,因此由實體儲存支援。這意味著:
/tmp/
僅適用於較小的、有大小限制的檔案;/var/tmp/
應該用於其他一切。不應將在引導週期中倖存的資料放置在
/tmp/
.如果
$TMPDIR
設定了環境變量,則使用該路徑,不要使用/tmp/
或/var/tmp/
直接使用。看文件層次結構(7)有關 Linux 系統的這兩個(以及大多數其他)目錄的詳細資訊。
可以透過以下方式查詢路徑系統路徑:
$ systemd-path temporary
/tmp
$ systemd-path temporary-large
/var/tmp
答案2
這是一個老問題,所以今天有另一個選擇。所依賴的 Linux 發行版systemd
(其中 90%)現在可以使用$XDG_RUNTIME_DIR
目錄 (XDG 基目錄規範)來儲存某些類型的暫存檔案。它一般位於/run/user/$uid
。
- 這是一個每用戶目錄
700
- 保持文件私有 - 這是一個
tmpfs
具有出色性能的安裝座(又稱 RAM 驅動器) - 它會自動清理
其缺點tmpfs
是它只能用於儲存小檔案(PID 檔案、鎖定檔案、套接字等)。
答案3
答案4
最初的問題是:Linux 有標準的臨時目錄嗎?如果有,它位於哪裡? tmp 資料夾位於:檔案系統/tmp 和檔案系統/var/tmp 可以刪除 /tmp 內容 - 如果您知道「按需要」上的各種應用程式需要/不需要哪些檔案/資料夾基礎。不需要的文件通常是由應用程式下載的文件,僅用於當時方便應用程式本身 - 因此在應用程式執行後不再需要。 /var/tmp 資料夾根本不應該被觸及。