Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 進程文件檢測神器:lsof 命令詳細用法大全

編輯:Linux 教學

什麼是 lsof?

lsof (List Open Files) 可列出進程打開的所有文件信息。Linux 中「一切皆文件」,包括:普通文件、目錄、網絡文件系統、字符設備、共享庫、管道、符號鏈接、Socket(網絡/Unix 域)等。

常用場景與參數

需求命令示例說明
列出所有打開文件lsof輸出量極大,建議配合過濾
查看誰在使用某文件lsof /path/file直接指定文件路徑
遞歸查看目錄下文件lsof +D /path/包含子目錄,+d 不遞歸
列出某用戶打開的文件lsof -u username-u 可接多用戶,-u ^user 排除
列出某程序打開的文件lsof -c httpd-c 匹配進程名開頭,等同 lsof | grep httpd 但更高效
列出多個程序的文件lsof -c mysql -c httpd多個 -c 參數
用戶+程序組合過濾lsof -u test -c mysql同時滿足用戶和程序
通過 PID 查看文件lsof -p 1866指定進程 ID
多個 PIDlsof -p 123,456,789逗號分隔
排除某 PIDlsof -p ^1排除 PID 1

輸出欄位含義(關鍵)

  • COMMAND:進程名
  • PID:進程 ID
  • USER:進程擁有者
  • FD:文件描述符(cwd=當前目錄、txt=程式碼、mem=內存映射、0/1/2=標準輸入/輸出/錯誤、數字=打開文件描述符)
  • TYPE:文件類型(REG=普通、DIR=目錄、CHR=字符設備、BLK=塊設備、FIFO=管道、SOCK=Socket、unix=Unix 域 Socket)
  • DEVICE:設備號
  • SIZE/OFF:文件大小/偏移量
  • NODE:inode 號
  • NAME:文件路徑或設備名

實戰技巧

  • 查找佔用端口的進程:lsof -i :80 或 lsof -i tcp:80
  • 查看某進程的網絡連接:lsof -p 1234 -i
  • 發現被刪除但仍佔用磁盤空間的文件:lsof | grep deleted
Copyright © Windows教程網 All Rights Reserved