Linux
我們如何計算/列出特定程序/命令打開的所有文件?
我們只能列出由特定 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 實例和子程序。
希望能幫助到你。