Files

如何找到最大的打開文件?

  • December 6, 2019

在所有程序打開的文件中尋找最大的文件。 lsof已經有打開的文件及其大小。它可能將正確的參數傳遞給lsof並處理輸出。

您可以使用-F選項lsof來獲得幾乎明確的輸出,該輸出是機器可解析的,只有中度的痛苦。輸出不明確,因為lsof將文件名中的換行符重寫為\n.

輸出由lsof每行一個欄位組成。每個名稱的第一個字元表示欄位類型,該行的其餘部分是欄位值。這些欄位是:p=PID(僅用於給定程序中的第一個描述符),f=descriptor,t=type(REG對於正常文件,唯一具有大小的類型),s=size(僅當可用時),n=name。下面的 awk 程式碼收集具有大小的條目並列印大小和文件名。其餘管道對輸出進行排序並保留最大尺寸的條目。

lsof -Fnst | awk '
   { field = substr($0,1,1); sub(/^./,""); }
   field == "p" { pid = $0; }
   field == "t" { if ($0 == "REG") size = 0; else next; }
   field == "s" { size = $0; }
   field == "n" && size != 0 { print size, $0; }
' | sort -k1n -u | tail -n42 | sed 's/^[0-9]* //'

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