Linux命令lsof
- 1、簡介
- 2、lsof
- 3、 使用及其引數配置
- 3.1、使用-i顯示所有連接
- 4、一些常用的用法
1、簡介
lsof(list open files)是一個列出當前系統打開檔案的工具,在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連接和硬體
2、lsof
在終端下輸入lsof即可顯示系統打開的檔案,因為 lsof 需要訪問核心記憶體和各種檔案,所以必須以 root 用戶才能運行它
lsof 常見的用法是查找應用程式打開的檔案的名稱和數目,可用于查找出某個特定應用程式將日志資料記錄到何處,或者正在跟蹤某個問題,

每列名稱所對應的含義如下:
| 名稱 | 含義 |
|---|---|
| COMMAND | 行程的名稱 |
| PID | 行程的標識 |
| USER | 行程的所有者 |
| FD | 檔案描述符 |
| TYPE | 檔案的型別 |
| DEVICE | 指定磁盤的名稱 |
| SIZE | 檔案的大小 |
| NODE | 索引節點(檔案在磁盤上的標識) |
| NAME | 打開檔案的確切名稱 |
其中檔案描述符(FD)串列有一下幾類:
| 檔案描述符 | 含義 |
|---|---|
| cwd | 表示current work dirctory,即:應用程式的當前作業目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改 |
| txt | 該型別的檔案是程式代碼,如應用程式二進制檔案本身或共享庫,如上串列中顯示的 /sbin/init 程式 |
| lnn | library references (AIX); |
| er | FD information error (see NAME column); |
| jld | jail directory (FreeBSD); |
| ltx | shared library text (code and data); |
| mxx | hex memory-mapped type number xx. |
| m86 | DOS Merge mapped file; |
| mem | memory-mapped file; |
| mmap | memory-mapped device; |
| pd | parent directory; |
| rtd | root directory; |
| tr | kernel trace file (OpenBSD); |
| v86 | VP/ix mapped file; |
| 0 | 表示標準輸出 |
| 1 | 表示標準輸入 |
| 2 | 表示標準錯誤 |
一般在標準輸出、標準錯誤、標準輸入后還跟著檔案狀態模式:
| u | 表示該檔案被打開并處于讀取/寫入模式, |
| r | 表示該檔案被打開并處于只讀模式, |
| w | 表示該檔案被打開并處于, |
| 空格 | 表示該檔案的狀態模式為unknow,且沒有鎖定, |
| - | 表示該檔案的狀態模式為unknow,且被鎖定, |
3、 使用及其引數配置
lsof語法格式是:
lsof [options] filename
lsof 幾個重要的引數:
| 引數 | 含義 |
|---|---|
| -a | 列出打開檔案存在的行程(結果進行“與”運算) |
| -c<行程名> | 列出指定行程所打開的檔案; |
| -g | 列出GID號行程詳情; |
| -d<檔案號> | 列出占用該檔案號的行程; |
| +d<目錄> | 列出目錄下被打開的檔案; |
| +D<目錄> | 遞回列出目錄下被打開的檔案; |
| -n<目錄> | 列出使用NFS的檔案; |
| -i<條件> | 列出符合條件的行程,(4、6、協議、:埠、 @ip ) |
| -p<行程號> | 列出指定行程號所打開的檔案; |
| -u | 列出UID號行程詳情; |
| -h | 顯示幫助資訊; |
| -v | 顯示版本資訊, |
3.1、使用-i顯示所有連接
語法:
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
語法引數決議:
| 引數 | 含義 |
|---|---|
| 46 | IPv4 or IPv6 |
| protocol | TCP or UDP |
| hostname | Internet host name |
| hostaddr | IPv4地址 |
| service | /etc/service中的 service name (可以不只一個) |
| port | 埠號 (可以不只一個) |

后面的引數有興趣的自己敲一敲,
4、一些常用的用法
lsof abc.txt 顯示開啟檔案abc.txt的行程
lsof -i :22 知道22埠現在運行什么程式
lsof -c abc 顯示abc行程現在打開的檔案
lsof -g gid 顯示歸屬gid的行程情況
lsof +d /usr/local/ 顯示目錄下被行程開啟的檔案
lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長
lsof -d 4 顯示使用fd為4的行程
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276706.html
標籤:其他
