Linux中的暫存目錄在哪裡?

Linux中的暫存目錄在哪裡?

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 支持,並在每次重新啟動時刷新。後者通常是一個適當的、持久的文件系統,因此由實體儲存支援。這意味著:

  1. /tmp/僅適用於較小的、有大小限制的檔案;/var/tmp/應該用於其他一切。

  2. 不應將在引導週期中倖存的資料放置在/tmp/.

如果$TMPDIR設定了環境變量,則使用該路徑,不要使用/tmp//var/tmp/直接使用。

文件層次結構(7)有關 Linux 系統的這兩個(以及大多數其他)目錄的詳細資訊。

可以透過以下方式查詢路徑系統路徑:

$ systemd-path temporary
/tmp
$ systemd-path temporary-large
/var/tmp

自由BSD,網路BSD,開放BSD蜻蜓有類似的描述上級(7)手冊頁。

答案2

這是一個老問題,所以今天有另一個選擇。所依賴的 Linux 發行版systemd(其中 90%)現在可以使用$XDG_RUNTIME_DIR目錄 (XDG 基目錄規範)來儲存某些類型的暫存檔案。它一般位於/run/user/$uid

  • 這是一個每用戶目錄700- 保持文件私有
  • 這是一個tmpfs具有出色性能的安裝座(又稱 RAM 驅動器)
  • 它會自動清理

其缺點tmpfs是它只能用於儲存小檔案(PID 檔案、鎖定檔案、套接字等)。

答案3

是的 /tmp 用於一般用途。看這裡這裡關於檔案系統層次結構標準。

/tmp/ 臨時檔案(另請參閱 /var/tmp)。通常在系統重新啟動之間不會保留。

PDF 中列出了更多詳細資訊。

答案4

最初的問題是:Linux 有標準的臨時目錄嗎?如果有,它位於哪裡? tmp 資料夾位於:檔案系統/tmp 和檔案系統/var/tmp 可以刪除 /tmp 內容 - 如果您知道「按需要」上的各種應用程式需要/不需要哪些檔案/資料夾基礎。不需要的文件通常是由應用程式下載的文件,僅用於當時方便應用程式本身 - 因此在應用程式執行後不再需要。 /var/tmp 資料夾根本不應該被觸及。

相關內容