Linux lsof命令詳解

2018年7月18日15:09:46 發(fā)表評論 3,952 ℃

Lsof是遵從Unix哲學(xué)的典范,它只完成一個功能,并且做的相當(dāng)完美——它可以列出某個進程打開的所有文件信息。打開的文件可能是普通的文件、目錄、NFS文件、塊文件、字符文件、共享庫、常規(guī)管道、命名管道、符號鏈接、Socket流、網(wǎng)絡(luò)Socket、UNIX域Socket,以及其它更多類型。因為“一切皆文件”乃為Unix系統(tǒng)的重要哲學(xué)思想之一,因此可以想象lsof命令的重要地位。

lsof [options] filename

lsof  /path/to/somefile:顯示打開指定文件的所有進程之列表

lsof -c string:顯示其COMMAND列中包含指定字符(string)的進程所有打開的文件;此選項可以重復(fù)使用,以指定多個模式;

lsof -p PID:查看該進程打開了哪些文件;進程號前可以使用脫字符“^”取反;

lsof -u USERNAME:顯示指定用戶的進程打開的文件;用戶名前可以使用脫字符“^”取反,如“l(fā)sof -u ^root”則用于顯示非root用戶打開的所有文件;

lsof -g GID:顯示歸屬gid的進程情況

lsof +d /DIR/:顯示指定目錄下被進程打開的文件

lsof +D /DIR/:基本功能同上,但lsof會對指定目錄進行遞歸查找,注意這個參數(shù)要比grep版本慢:

lsof -a:按“與”組合多個條件,如lsof -a -c apache -u apache

lsof -N:列出所有NFS(網(wǎng)絡(luò)文件系統(tǒng))文件

lsof -d FD:顯示指定文件描述符的相關(guān)進程;也可以為描述符指定一個范圍,如0-2表示0,1,2三個文件描述符;另外,-d還支持其它很多特殊值,如:

mem: 列出所有內(nèi)存映射文件;

mmap:顯示所有內(nèi)存映射設(shè)備;

txt:列出所有加載在內(nèi)存中并正在執(zhí)行的進程,包含code和data;

cwd:正在訪問當(dāng)前目錄的進程列表;

lsof -n:不反解IP至HOSTNAME

lsof -i:用以顯示符合條件的進程情況

lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

46:IPv4或IPv6

protocol:TCP or UDP

hostname:Internet host name

hostaddr:IPv4地址

service:/etc/service中的服務(wù)名稱(可以不只一個)

port:端口號 (可以不只一個)

例如: 查看22端口現(xiàn)在運行的情況

[root@www ~]# lsof -i :22

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

sshd     1390 root    3u  IPv4  13050      0t0  TCP *:ssh (LISTEN)

sshd     1390 root    4u  IPv6  13056      0t0  TCP *:ssh (LISTEN)

sshd    36454 root    3r  IPv4  94352      0t0  TCP www.zhongjima.net:ssh->172.16.0.1:50018 (ESTABLISHED)

上述命令中,每行顯示一個打開的文件,若不指定條件默認(rèn)將顯示所有進程打開的所有文件。lsof輸出各列信息的意義如下:

COMMAND:進程的名稱

PID:進程標(biāo)識符

USER:進程所有者

FD:文件描述符,應(yīng)用程序通過文件描述符識別該文件。如cwd、txt等

TYPE:文件類型,如DIR、REG等

DEVICE:指定磁盤的名稱

SIZE:文件的大小

NODE:索引節(jié)點(文件在磁盤上的標(biāo)識)

NAME:打開文件的確切名稱

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: