lsof命令效能監測與優化

2021-10-04 06:23:15 字數 4514 閱讀 6551

lsof:查詢進行檔案控制代碼數,結合使用的命令為 ulimit -a | grep 『open files』

lsof命令用於檢視你程序開打的檔案開啟檔案的程序程序開啟的埠(tcp、udp)找回/恢復刪除的檔案。是十分方便的系統監視工具,因為lsof命令需要訪問核心記憶體和各種檔案,所以需要root使用者執行。 在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。所以如傳輸控制協議 (tcp) 和使用者資料報協議 (udp) 套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,無論這個檔案的本質如何,該檔案描述符為應用程式與基礎作業系統之間的互動提供了通用介面。因為應用程式開啟檔案的描述符列表提供了大量關於這個應用程式本身的資訊,因此通過lsof工具能夠檢視這個列表對系統監測以及排錯將是很有幫助的。

語法

lsof(選項)
選項

-a:列出開啟檔案存在的程序;

-c《程序名》:列出指定程序所開啟的檔案;

-g:列出gid號程序詳情;

-d《檔案號》:列出占用該檔案號的程序;

+d《目錄》:列出目錄下被開啟的檔案;

+d《目錄》:遞迴列出目錄下被開啟的檔案; -

n《目錄》:列出使用nfs的檔案;

-i《條件》:列出符合條件的程序。(4、6、協議、:埠、 @ip )

-p《程序號》:列出指定程序號所開啟的檔案;

-u:列出uid號程序詳情;

-h:顯示幫助資訊;

-v:顯示版本資訊。

例項

lsof輸出各列資訊的意義如下:

command:程序的名稱 

pid:程序識別符號

ppid:父程序識別符號(需要指定-r引數)

user:程序所有者

pgid:程序所屬組

fd:檔案描述符,應用程式通過檔案描述符識別該檔案。

檔案描述符列表:

cwd:表示current work dirctory,即:應用程式的當前工作目錄,這是該**應用程式啟動的目錄**,除非它本身對這個目錄進行更改

txt:該型別的檔案是**程式****,如應用程式二進位制檔案本身或共享庫,如上列表中顯示的 /sbin/init 程式

lnn:library references (aix); er:fd information error (see name column);

jld:jail directory (freebsd);

ltx:shared library text (code and data);

pd:parent directory;

rtd:root directory;

tr:kernel trace file (openbsd);

0:表示標準輸出

1:表示標準輸入

2:表示標準錯誤

一般在標準輸出、標準錯誤、標準輸入後還跟著檔案狀態模式:

u:表示該檔案被開啟並處於讀取/寫入模式。 

r:表示該檔案被開啟並處於唯讀模式。

w:表示該檔案被開啟並處於。

空格:表示該檔案的狀態模式為unknow,且沒有鎖定。

-:表示該檔案的狀態模式為unknow,且被鎖定。

n:for a solaris nfs lock of unknown type; 

r:for read lock on part of the file;

r:for a read lock on the entire file;

w:for a write lock on part of the file;(檔案的部分寫鎖)

w:for a write lock on the entire file;(整個檔案的寫鎖)

u:for a read and write lock of any length;

u:for a lock of unknown type;

x:for an sco openserver xenix lock on part of the file;

x:for an sco openserver xenix lock on the entire file;

space:if there is no lock.

檔案型別:

dir:表示目錄。 

chr:表示字元型別。

blk:塊裝置型別。

unix: unix 域套接字。

fifo:先進先出 (fifo) 佇列。

ipv4:網際協議 (ip) 套接字。

device:指定磁碟的名稱

size:檔案的大小

node:索引節點(檔案在磁碟上的標識)

name:開啟檔案的確切名稱

常用命令1.列出所有開啟的檔案:lsof

備註: 如果不加任何引數,就會開啟所有被開啟的檔案,建議加上一下引數來具體定位

2. 檢視誰正在使用某個檔案

lsof /filepath/file

3.遞迴檢視某個目錄的檔案資訊

lsof +d /filepath/filepath2/

備註: 使用了+d,對應目錄下的所有子目錄和檔案都會被列出

4. 比使用+d選項,遍歷檢視某個目錄的所有檔案資訊 的方法

lsof | grep 『/filepath/filepath2/』

5. 列出某個使用者開啟的檔案資訊

lsof -u username

備註: -u 選項,u其實是user的縮寫

6. 列出某個程式所開啟的檔案資訊

lsof -c mysql

備註: -c 選項將會列出所有以mysql開頭的程式的檔案,其實你也可以寫成**lsof | grep mysql,**但是第一種方法明顯比第二種方法要少打幾個字元了

7. 列出多個程式多開啟的檔案資訊

lsof -c mysql -c apache

8. 列出某個使用者以及某個程式所開啟的檔案資訊

lsof -u test -c mysql

9. 列出除了某個使用者外的被開啟的檔案資訊

lsof -u ^root

備註:^這個符號在使用者名稱之前,將會把是root使用者開啟的程序不讓顯示

10. 通過某個程序號顯示該進行開啟的檔案

lsof -p 1

11. 列出多個程序號對應的檔案資訊

lsof -p 123,456,789

12. 列出除了某個程序號,其他程序號所開啟的檔案資訊

lsof -p ^1

13 . 列出所有的網路連線

lsof -i

14. 列出所有tcp 網路連線資訊

lsof -i tcp

15. 列出所有udp網路連線資訊

lsof -i udp

16. 列出誰在使用某個埠

lsof -i :3306

17. 列出誰在使用某個特定的udp埠

lsof -i udp:55

特定的tcp埠

lsof -i tcp:80

18. 列出某個使用者的所有活躍的網路埠

lsof -a -u test -i

19. 列出所有網路檔案系統

lsof -n

20.網域名稱socket檔案

lsof -u

21.某個使用者組所開啟的檔案資訊

lsof -g 5555

22. 根據檔案描述列出對應的檔案資訊

lsof -d description(like 2)

23. 根據檔案描述範圍列出檔案資訊

lsof -d 2-3

vmstat命令效能監測與優化

vmstat命令的含義為顯示虛擬記憶體狀態 viryual memor statics 但是它可以報告關於程序 記憶體 i o等系統整體執行狀態。語法vmstat 選項 引數 選項 a 顯示活動內頁 f 顯示啟動後建立的程序總數 m 顯示slab資訊 n 頭資訊僅顯示一次 s 以 方式顯示事件計數器...

效能監測和優化概述

監測資料庫是為了了解伺服器的執行狀況。有效的監測意味著獲取效能的週期性快照,以分析出導致問題的流程,同時 便於掌握一段時間內的效能變化趨勢。監測資料庫對資料庫開發者和管理者的意義 確定是否能提高效能。例如,通過監測頻繁使用的查詢的響應時間來調整sql語句,表索引和表結構。評估使用者活動。例如,通過監...

Linux 效能監測相關命令

參考文章 linux命令大全 參考文章 linux 執行程序實時監控pidstat命令詳解 top命令可以實時動態地檢視系統的整體運 況,是乙個綜合了多方資訊監測系統效能和執行資訊的實用工具。通過top命令所提供的互動式介面,用熱鍵可以管理。h 顯示執行緒級別資訊 top h p pid 查詢pid...