一般lsof 會輸出以下這些信息:
COMMAND: 進程的名稱
PID:進程標識符
PPID:父進程標識符(需要指定-R參數)
USER:進程所有者
PGID:進程所屬組
FD:文件描述符,應用程序通過文件描述符識別該文件。
TYPE:文件類型。如 DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱
這篇重點是講一下FD文件描述符,因為在lsof 中這個內容占了很大的一個篇幅,我又一向崇尚精簡,所以把它單獨拿了出來學習。
FD:
(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)空格:表示該文件的狀態模式為 unknown ,且沒有鎖定
(5)- : 表示該文件的狀態模式為 unknown ,且被鎖定
同時在文件狀態模式后面,還跟着相關的鎖
(1)N:for a Solaris NFS lock of unknown type
(2)r: for a 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 OpentServer Xenix lock on the entire file
(10)space : if there is no lock