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 |
| 多個 PID | lsof -p 123,456,789 | 逗號分隔 |
| 排除某 PID | lsof -p ^1 | 排除 PID 1 |
lsof -i :80 或 lsof -i tcp:80lsof -p 1234 -ilsof | grep deleted