一、lsof介紹
lsof是List Open Files的縮寫,是一款功能強大的系統管理員工具,用於列出當前系統打開的所有文件及進程信息。它能夠監視系統中所有文件的狀態,包括哪些文件被哪些進程打開,哪些用戶正在使用文件,哪些文件被遺留在磁盤中,還可以查看網絡連接情況等。
在Linux系統中,文件被看作是文件描述符(file descriptor)。每個進程可以通過文件描述符讀取或寫入文件。因此,通過分析進程的文件描述符可以獲得對系統資源使用的整體情況。
二、常用參數
1. -p參數:輸入指定進程信息。
2. -u參數:輸入指定用戶信息。
3. -c參數:輸入指定程序名信息。
4. -d參數:輸入指定文件號信息。
5. -i參數:輸入指定各種網絡狀態信息(如TCP, UDP等)。
6. -t參數:輸入指定進程號信息。
//例:查看進程號為1234的進程所打開的文件 lsof -p 1234
三、常用輸出信息
1. COMMAND:進程的名稱。
2. PID:進程的ID號。
3. USER:進程的所有者。
4. FD:文件描述符,應用程序通過文件描述符讀寫文件,stdin、stdout、stderr分別用0、1、2表示。
5. TYPE:文件類型,如DIR(目錄)、CHR(字符設備)、REG(常規文件)等。
6. DEVICE:文件所在的磁盤設備名。
7. SIZE:文件的大小。
8. NODE:文件的索引節點(Inode)編號。
9. NAME:打開文件的確切名稱。
//例:查看所有以/home/abc/開頭的打開文件 lsof /home/abc/*
四、進程連接網絡的情況
1. TCP:進程連接TCP協議的端口。
2. UDP:進程連接UDP協議的端口。
3. RAW:進程連接IP協議的原始套接字。
4. UNIX:進程連接Unix域套接字。
//例:查看所有連接本機22端口的進程 lsof -i :22
五、lsof引申出的應用
1. 查找被鎖住的文件
lsof | grep DEL | awk '{print $9}' | xargs ls -l
2. 查找正在寫文件的進程
lsof -r1 /path/to/file
3. 查看目錄和子目錄中哪些文件被哪些進程打開
lsof +D /path/to/dir
六、總結
lsof是一款功能強大的工具,可以監視系統中所有文件的狀態,並能查看網絡連接情況等。在日常運維和故障排除中,lsof能夠幫助管理員輕鬆定位文件和進程信息,提升系統管理效率。
原創文章,作者:NSWZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/143261.html