Linux

我們如何計算/列出特定程序/命令打開的所有文件?

  • January 29, 2021

我們只能列出由特定 PID 打開的文件

lsof -p 1000
lsof -p 1000 | wc -l

我們如何列出/計算由特定程序/命令(例如,java)打開的文件?

如果我們可以對每個程序的打開文件數進行分組,那就更好了。我想檢查哪些程序有大量打開的文件。

我想要類似的東西

lsof -c "java" # -c is an imaginary argument similar to -p for process

我使用 Ubuntu 20.04。

我認為在 lsof 上實現這樣的事情沒有任何論據,而且我不知道您的 lsof 二進製文件上有哪些標誌可用。

我認為你可以用這樣的東西來實現你想要的,也許用’grep java’替換頭部:

lsof | awk '{print $1}' | sort | uniq -c | sort -rn | head

lsof:基本上我列出了所有打開的文件

awk ‘{print $1}’:僅列印第一列,即程序名稱

sort:您需要在應用 uniq 之前進行排序,否則它將拆分計數,因此 java 可能會出現幾個時間取決於 lsof 列印的順序。

uniq -c:按程序名稱和計數行分組

最後兩個是為了便於閱讀。

這樣做的問題是所有的 java 實例都將被組合,我想你可以對 PID 應用相同的邏輯,然後通過 PID 過濾你的 java 實例和子程序。

希望能幫助到你。

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