lsof

顯示Linux系統當前已打開的所有文件列表 lsof -p pid

補充說明

lsof命令 用於查看你進程打開的文件,打開文件的進程,進程打開的端口(TCP、UDP)。找回/恢復刪除的文件。是十分方便的系統監視工具,因爲lsof命令需要訪問核心內存和各種文件,所以需要root用戶執行。

在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以如傳輸控制協議 (TCP) 和用戶數據報協議 (UDP) 套接字等,系統在後臺都爲該應用程序分配了一個文件描述符,無論這個文件的本質如何,該文件描述符爲應用程序與基礎操作系統之間的交互提供了通用接口。因爲應用程序打開文件的描述符列表提供了大量關於這個應用程序本身的信息,因此通過lsof工具能夠查看這個列表對系統監測以及排錯將是很有幫助的。

語法

1lsof (選項)

選項

 1-a:列出打開文件存在的進程;
 2-c<進程名>:列出指定進程所打開的文件;
 3-g:列出GID號進程詳情;
 4-d<文件號>:列出佔用該文件號的進程;
 5+d<目錄>:列出目錄下被打開的文件;
 6+D<目錄>:遞歸列出目錄下被打開的文件;
 7-n<目錄>:列出使用NFS的文件;
 8-i<條件>:列出符合條件的進程(協議、:端口、 @ip )
 9-p<進程號>:列出指定進程號所打開的文件;
10-u:列出UID號進程詳情;
11-h:顯示幫助信息;
12-v:顯示版本信息

實例

 1lsof
 2command     PID USER   FD      type             DEVICE     SIZE       NODE NAME
 3init          1 root  cwd       DIR                8,2     4096          2 /
 4init          1 root  rtd       DIR                8,2     4096          2 /
 5init          1 root  txt       REG                8,2    43496    6121706 /sbin/init
 6init          1 root  mem       REG                8,2   143600    7823908 /lib64/ld-2.5.so
 7init          1 root  mem       REG                8,2  1722304    7823915 /lib64/libc-2.5.so
 8init          1 root  mem       REG                8,2    23360    7823919 /lib64/libdl-2.5.so
 9init          1 root  mem       REG                8,2    95464    7824116 /lib64/libselinux.so.1
10init          1 root  mem       REG                8,2   247496    7823947 /lib64/libsepol.so.1
11init          1 root   10u     FIFO               0,17                1233 /dev/initctl
12migration     2 root  cwd       DIR                8,2     4096          2 /
13migration     2 root  rtd       DIR                8,2     4096          2 /
14migration     2 root  txt   unknown                                        /proc/2/exe
15ksoftirqd     3 root  cwd       DIR                8,2     4096          2 /
16ksoftirqd     3 root  rtd       DIR                8,2     4096          2 /
17ksoftirqd     3 root  txt   unknown                                        /proc/3/exe
18migration     4 root  cwd       DIR                8,2     4096          2 /
19migration     4 root  rtd       DIR                8,2     4096          2 /
20migration     4 root  txt   unknown                                        /proc/4/exe
21ksoftirqd     5 root  cwd       DIR                8,2     4096          2 /
22ksoftirqd     5 root  rtd       DIR                8,2     4096          2 /
23ksoftirqd     5 root  txt   unknown                                        /proc/5/exe
24events/0      6 root  cwd       DIR                8,2     4096          2 /
25events/0      6 root  rtd       DIR                8,2     4096          2 /
26events/0      6 root  txt   unknown                                        /proc/6/exe
27events/1      7 root  cwd       DIR                8,2     4096          2 /

lsof輸出各列信息的意義如下:

標識 說明
COMMAND 進程的名稱
PID 進程標識符
PPID 父進程標識符(需要指定-R參數)
USER 進程所有者
PGID 進程所屬組
FD 文件描述符,應用程序通過它識別該文件

文件描述符列表:

標識 說明
cwd 表示當前工作目錄,即:應用程序的當前工作目錄,這是該應用程序啓動的目錄,除非它本身對這個目錄進行更改
txt 該類型的文件是程序代碼,如應用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序
lnn 庫引用 (AIX);
er FD 信息錯誤(參見名稱欄)
jld jail 目錄 (FreeBSD);
ltx 共享庫文本(代碼和數據)
mxx 十六進制內存映射類型編號xx
m86 DOS合併映射文件
mem 內存映射文件
mmap 內存映射設備
pd 父目錄
rtd 根目錄
tr 內核跟蹤文件 (OpenBSD)
v86 VP/ix 映射文件
0 表示標準輸出
1 表示標準輸入
2 表示標準錯誤

一般在標準輸出、標準錯誤、標準輸入後還跟着文件狀態模式:

標識 說明
u 表示該文件被打開並處於讀取/寫入模式
r 表示該文件被打開並處於只讀模式
w 表示該文件被打開並處於寫入模式
空格 表示該文件的狀態模式爲 unknow,且沒有鎖定
- 表示該文件的狀態模式爲 unknow,且被鎖定

同時在文件狀態模式後面,還跟着相關的鎖:

標識 說明
N 對於未知類型的Solaris NFS鎖
r 用於部分文件的讀取鎖定
R 對整個文件進行讀取鎖定
w 對文件的一部分進行寫鎖定(文件的部分寫鎖)
W 對整個文件進行寫鎖定(整個文件的寫鎖)
u 用於任何長度的讀寫鎖
U 對於未知類型的鎖
x 對於文件部分的SCO OpenServer Xenix鎖
X 對於整個文件的SCO OpenServer Xenix鎖
space 如果沒有鎖

文件類型

標識 說明
DIR 表示目錄
CHR 表示字符類型
BLK 塊設備類型
UNIX UNIX 域套接字
FIFO 先進先出 (FIFO) 隊列
IPv4 網際協議 (IP) 套接字
DEVICE 指定磁盤的名稱
SIZE 文件的大小
NODE 索引節點(文件在磁盤上的標識)
NAME 打開文件的確切名稱
REG 常規文件

列出指定進程號所打開的文件:

1lsof -p $pid

獲取端口對應的進程ID=>pid

1lsof -i:9981 -P -t -sTCP:LISTEN

列出打開文件的進程:

1lsof $filename

查看端口占用

1lsof -i:$port

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: