lsof命令簡介:
lsof(list open files)是乙個列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。所以,lsof的功能很強大。一般root使用者才能執行lsof命令,普通使用者可以看見/usr/sbin/lsof命令,但是普通使用者執行會顯示「permission denied」。因此通過lsof工具能夠檢視這個列表對系統監測以及排錯將是很有幫助的。
在終端下輸入lsof即可顯示系統開啟的檔案,因為 lsof 需要訪問核心記憶體和各種檔案,所以必須以 root 使用者的身份執行它才能夠充分地發揮其功能。
每行顯示乙個開啟的檔案,若不指定條件預設將顯示所有程序開啟的所有檔案。lsof輸出各列資訊的意義如下:
command:程序的名稱
pid:程序識別符號
user:程序所有者
fd:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt等
type:檔案型別,如dir、reg等
device:指定磁碟的名稱
size:檔案的大小
node:索引節點(檔案在磁碟上的標識)
name:開啟檔案的確切名稱
檔案描述符列表:
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);
pd:parent directory;
rtd:root directory;
tr:kernel trace file (openbsd);
0:表示標準輸出
1:表示標準輸入
2:表示標準錯誤
一般在標準輸出、標準錯誤、標準輸入後還跟著檔案狀態模式:
u:表示該檔案被開啟並處於讀取/寫入模式。
r:表示該檔案被開啟並處於唯讀模式。
w:表示該檔案被開啟並處於。
空格:表示該檔案的狀態模式為unknow,且沒有鎖定。
-:表示該檔案的狀態模式為unknow,且被鎖定。
n:for a solaris nfs lock of unknown type;
r:for read lock on part of the file;
r:for a read lock on the entire file;
w:for a write lock on part of the file;(檔案的部分寫鎖)
w:for a write lock on the entire file;(整個檔案的寫鎖)
u:for a read and write lock of any length;
u:for a lock of unknown type;
x:for an sco openserver xenix lock on part of the file;
x:for an sco openserver xenix lock on the entire file;
space:if there is no lock.
檔案型別:
dir:表示目錄。
chr:表示字元型別。
blk:塊裝置型別。
unix: unix 域套接字。
fifo:先進先出 (fifo) 佇列。
ipv4:網際協議 (ip) 套接字。
device:指定磁碟的名稱
size:檔案的大小
node:索引節點(檔案在磁碟上的標識)
name:開啟檔案的確切名稱
-a:列出開啟檔案存在的程序;lsof指令的用法如下:-c《程序名》:列出指定程序所開啟的檔案;
-g:列出gid號程序詳情;
-d《檔案號》:列出占用該檔案號的程序;
+d《目錄》:列出目錄下被開啟的檔案;
+d《目錄》:遞迴列出目錄下被開啟的檔案;
-n《目錄》:列出使用nfs的檔案;
-i《條件》:列出符合條件的程序。(4、6、協議、:埠、 @ip )
-p《程序號》:列出指定程序號所開啟的檔案;
-u:列出uid號程序詳情;
-h:顯示幫助資訊;
-v:顯示版本資訊。
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.1.111 檢視遠端已開啟的網路連線(連線到192.168.1.111)
--------------------------------------
lsof -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 -> 埠號 (可以不只乙個)
--------------------------------------
lsof +|-r [t] 控制lsof不斷重複執行,預設是15s重新整理
-r,lsof會永遠不斷的執行,直到收到中斷訊號
+r,lsof會一直執行,直到沒有檔案被顯示
例子:不斷檢視目前ftp連線的情況:lsof -i [email protected]:ftp -r
Linux Lsof命令詳解
一般root使用者才能執行lsof命令,普通使用者可以看見 usr sbin lsof命令,但是普通使用者執行會顯示 permission denied 我總結一下lsof指令的用法 lsof abc.txt 顯示開啟檔案abc.txt的程序 lsof i 22 知道22埠現在執行什麼程式 lsof...
linux lsof命令詳解
lsof list open files 是乙個列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。所以如傳輸控制協議 tcp 和使用者資料報協議 udp 套接字等,系統在後台都為該應用程式分配了乙個檔案描述符,無論這...
Linux lsof命令詳解
lsof list open files 是乙個列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。在終端下輸入lsof即可顯示系統開啟的檔案,因為 lsof 需要訪問核心記憶體和各種檔案,所以必須以 root 使用者...