1. 程式人生 > >Linux效能監控命令詳解:lsof

Linux效能監控命令詳解:lsof

lsof可以檢視當前系統所有的開啟檔案,在linux環境下,一切皆檔案,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體,如傳輸控制協議 (TCP) 和使用者資料報協議 (UDP) 套接字等,系統在後臺都為該應用程式分配了一個檔案描述符,檔案描述符提供了大量關於這個應用程式本身的資訊。

命令引數:

-a 列出被開啟的檔案的程序列表
-c<程序名> 列出指定程序所開啟的檔案
-g 列出GID號程序詳情
-d<檔案號> 列出佔用該檔案號的程序
+d<目錄> 列出目錄下被開啟的檔案
+D<目錄> 遞迴列出目錄下被開啟的檔案
-n<目錄> 列出使用NFS的檔案
-i<條件> 列出符合條件的程序。(4、6、協議、:埠、 @ip )
-p<程序號> 列出指定程序號所開啟的檔案
-u 列出UID號程序詳情

1、檔案被哪些程序打開了

[email protected]:~# lsof -a /var/lib/mysql/mysql/slow_log.CSV
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
mysqld  29363 mysql   63r   REG  253,1        0 263979 /var/lib/mysql/mysql/slow_log.CSV

2、列出使用者開啟的檔案

[email protected]:~# lsof -u root | more
COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1 root  cwd       DIR              253,1     4096          2 /
init          1 root  rtd       DIR              253,1     4096          2 /
init          1 root  txt       REG              253,1   167192    1048737 /sbin/init

3、列出程式(command)打開了哪些檔案

[email protected]:~# lsof -c python
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
python  32280 root  rtd    DIR  253,1     4096      2 /
python  32280 root  mem    REG  253,1    52120 927846 /lib/x86_64-linux-gnu/libnss_files-2.15.so
python  32280 root  DEL    REG  253,1          263953 /usr/lib/python2.7/lib-dynload/_multiprocessing.so

4、根據程序號列出該程序開啟的檔案

[email protected]:~# lsof -p 31370  #nginx的程序號
COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
nginx   31370 www-data  cwd    DIR              253,1     4096       2 /
nginx   31370 www-data  rtd    DIR              253,1     4096       2 /
nginx   31370 www-data  txt    REG              253,1   843688 1186644 /usr/sbin/nginx

5、檢視所有網路連線,包括tcp,udp,ipv4,ipv6的連線(網路連線也是檔案)

[email protected]:~# lsof -i
COMMAND    PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
pptpd      975     root    6u  IPv4     8836      0t0  TCP *:1723 (LISTEN)
ssserver  7366     root    4u  IPv4   100096      0t0  TCP *:8388 (LISTEN)
ssserver  7366     root    5u  IPv4   100097      0t0  UDP *:8388
ssserver  7366     root    7u  IPv4   100098      0t0  UDP *:57935

6、檢視某個埠開啟的檔案(socket 連線)

[email protected]:~# lsof -i :80
COMMAND   PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx   31369     root    6u  IPv4 8882096      0t0  TCP *:http (LISTEN)

7、檢視所有TCP連線

lsof -n -P -i TCP -s TCP:LISTEN

關注公眾號「Python之禪」(id:vttalk)獲取最新文章 python之禪

猜你喜歡