天天看點

菜鳥學Linux指令:lsof指令 查找指定使用者、程序、端口打開的檔案

lsof,list open files,

是一個列出目前系統打開檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以通路正常資料,還可以通路網絡連接配接和硬體。

指令格式:

lsof [參數][檔案]

指令功能: 

用于檢視程序打開的檔案,打開檔案的程序,程序打開的端口(tcp、udp)。

lsof 需要通路核心記憶體和各種檔案,是以通常需要root使用者執行。

指令參數:

-a 列出打開檔案存在的程序

-c<程序名> 列出指定程序所打開的檔案

-g 列出gid号程序詳情

-d<檔案号> 列出占用該檔案号的程序

+d<目錄> 列出目錄下被打開的檔案

+d<目錄> 遞歸列出目錄下被打開的檔案,可以遞歸檢視某個目錄的檔案資訊

-n<目錄> 列出使用nfs的檔案

-i<條件> 列出符合條件的程序。(4、6、協定、:端口、 @ip )

-p<程序号> 列出指定程序号所打開的檔案

-u username 檢視使用者打開哪些檔案

-h 顯示幫助資訊

-v 顯示版本資訊

lsof +|-r [t] 控制lsof不斷重複執行,預設是15s重新整理

-r,lsof會永遠不斷的執行,直到收到中斷信号

+r,lsof會一直執行,直到沒有檔案被顯示

例:檢視目前ftp連接配接的情況,每隔3秒不斷執行:lsof -i [email protected]:ftp -r 3

使用執行個體:

1.直接使用lsof 不加任何參數

bingyue@ubuntu:/$ sudo lsof | head -30

菜鳥學Linux指令:lsof指令 查找指定使用者、程式、端口打開的檔案

command:程序的名稱

pid:程序辨別符

ppid:父程序辨別符(需要指定-r參數)

user:程序所有者

pgid:程序所屬組

fd:檔案描述符,應用程式通過檔案描述符識别該檔案。如cwd、txt等

(1)cwd:表示current work dirctory,即:應用程式的目前工作目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改

(2)txt :該類型的檔案是程式代碼,如應用程式二進制檔案本身或共享庫,如上清單中顯示的 /sbin/init 程式

(3)lnn:library references (aix);

(4)er:fd information error (see name column);

(5)jld:jail directory (freebsd);

(6)ltx:shared library text (code and data);

(7)mxx :hex memory-mapped type number xx.

(8)m86:dos merge mapped file;

(9)mem:memory-mapped file;

(10)mmap:memory-mapped device;

(11)pd:parent directory;

(12)rtd:root directory;

(13)tr:kernel trace file (openbsd);

(14)v86 vp/ix mapped file;

(15)0:表示标準輸出

(16)1:表示标準輸入

(17)2:表示标準錯誤

一般在标準輸出、标準錯誤、标準輸入後還跟着檔案狀态模式:r、w、u等

(1)u:表示該檔案被打開并處于讀取/寫入模式

(2)r:表示該檔案被打開并處于隻讀模式

(3)w:表示該檔案被打開并處于

(4)空格:表示該檔案的狀态模式為unknow,且沒有鎖定

(5)-:表示該檔案的狀态模式為unknow,且被鎖定

同時在檔案狀态模式後面,還跟着相關的鎖

(1)n:for a solaris nfs lock of unknown type;

(2)r:for read lock on part of the file;

(3)r:for a read lock on the entire file;

(4)w:for a write lock on part of the file;(檔案的部分寫鎖)

(5)w:for a write lock on the entire file;(整個檔案的寫鎖)

(6)u:for a read and write lock of any length;

(7)u:for a lock of unknown type;

(8)x:for an sco openserver xenix lock on part of the file;

(9)x:for an sco openserver xenix lock on the entire file;

(10)space:if there is no lock.

type:檔案類型,如dir、reg等,常見的檔案類型

(1)dir:表示目錄

(2)chr:表示字元類型

(3)blk:塊裝置類型

(4)unix: unix 域套接字

(5)fifo:先進先出 (fifo) 隊列

(6)ipv4:網際協定 (ip) 套接字

device:指定磁盤的名稱

size:檔案的大小

node:索引節點(檔案在磁盤上的辨別)

name:打開檔案的确切名稱

2.檢視誰正在使用某個檔案

lsof /bin/bash

清單資訊會顯示user,是以可以通過這個指令檢視誰在使用目前的目錄

3.lsof abc.txt 顯示開啟檔案abc.txt的程序

lsof 目錄名 查找誰在使用檔案目錄系統

lsof -i :22 知道22端口被哪個程序占用

lsof -c abc 顯示abc程序現在打開的檔案

lsof -g gid 顯示歸屬gid的程序情況

lsof -n 不将ip轉換為hostname,預設是不加上-n參數

lsof -p 12 看程序号為12的程序打開了哪些檔案

lsof -u username 檢視使用者打開哪些檔案

lsof -i @192.168.106.128 檢視遠端已打開的網絡連接配接(連接配接到192.168.106.128)

繼續閱讀