
/run/shm
在(以前的)中建立目錄/dev/shm
並將其用作應用程式的臨時目錄是一種好的做法嗎?
背景:我正在為一個程式編寫黑盒測試,該程式對文件和目錄執行很多操作。對於每個測試,我都會創建很多文件和目錄,然後運行程序,然後創建預期的文件和目錄集,然後運行 diff 進行比較。我現在有大約 40 個測試,它們的運行時間已經超過 2 秒。希望加快速度,我想在某種 ramdisk 上的目錄中運行測試。
研究我偶然發現的記憶體盤一個問題答案表明可以建立目錄/dev/shm
並像臨時目錄一樣使用它。研究更多但我偶然發現維基頁面debian 說直接使用是錯誤的/dev/shm
。我應該使用這些shm_*
功能。不幸的是,這些shm_*
函數似乎無法在 shell 腳本中使用。
現在我很困惑。是否可以像臨時目錄一樣使用/run/shm
(以前)?/dev/shm
答案1
/run
只要您擁有適當的權限,使用某個目錄是完全可以的。在一些現代發行版中,/tmp
它已經是記憶體中的虛擬檔案系統或指向內部目錄的符號連結/run
。如果這是您的情況(您可以在 中檢查/etc/fstab
,或輸入mtab
),您可以將/tmp
其用作臨時目錄。
另外,不要與 Debian 的文章混淆。shm_*
函數用於建立進程間通訊的共享記憶體段。透過這些函數,您可以在兩個或多個進程之間共享記憶體片段,以便它們使用相同的資料進行通訊或協作。進程將記憶體段附加在自己的位址空間中,並且可以像往常一樣在那裡讀寫。內核處理複雜性。這些函數不能作為 shell 函數使用(並且在 shell 上下文中也不是很有用)。欲了解更多信息,請查看man 7 shm_overview
。本文的重點是,任何程式都不應直接管理代表共享記憶體段的偽文件,而應使用適當的函數來建立、附加和刪除共享記憶體段。