Directory-Structure

使用 /run/shm(以前的 /dev/shm)作為臨時目錄

  • February 17, 2019

/run/shm在(以前/dev/shm)中創建一個目錄並將其用作應用程序的臨時目錄是一種好習慣嗎?

背景:我正在為一個對文件和目錄做很多事情的程序編寫黑盒測試。對於每個測試,我都會創建很多文件和目錄,然後執行程序,然後創建預期的文件和目錄集,然後執行 diff 進行比較。我現在有大約 40 個測試,它們已經執行了 2 秒多。希望加快速度,我想在某種 ramdisk 上的目錄中執行測試。

在研究 ram 磁碟時,我偶然發現了一個問題,答案是可以在其中創建一個目錄/dev/shm並像使用臨時目錄一樣使用它。研究了一些,但是我偶然發現了一個來自 debian 的 wiki 頁面,指出/dev/shm直接使用它是一個錯誤。我應該使用這些shm_*功能。不幸的是,這些shm_*函式似乎無法在 shell 腳本中使用。

現在我很困惑。像臨時目錄一樣使用/run/shm(以前)是否可以?/dev/shm

/run只要您擁有適當的權限,就可以使用某個目錄。在一些現代發行版中,/tmp已經是記憶體中的虛擬文件系統或指向內部目錄的符號連結/run。如果這是您的情況(您可以在 中檢查/etc/fstab或鍵入mtab),您可以將/tmp其用作臨時目錄。

另外,不要對來自 Debian 的文章感到困惑。shm_*函式用於為程序間通信創建共享記憶體段。使用這些功能,您可以在兩個或多個程序之間共享一段記憶體,讓它們使用相同的數據進行通信或協作。程序將記憶體段附加在自己的地址空間中,並且可以像往常一樣在那裡讀寫。核心處理複雜性。這些函式不能作為 shell 函式使用(並且在 shell 上下文中不會很有用)。如需更多資訊,請查看man 7 shm_overview. 這篇文章的重點是任何程序都不應該直接管理代表共享段的偽文件,而是使用適當的函式來創建、附加和刪除共享記憶體段。

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