linux命令之lsof

2017-03-09  本文已影响129人  mr_franklin

lsof是list open files的缩写。顾名思义,其作用是列出当前系统下所有打开的文件。
因为linux的一切皆文件的设计哲学,像socket,进程等,在系统中都会被视为文件

参数含义

[~]# lsof
COMMAND     PID   TID     USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1           root  cwd       DIR              253,1      4096          2 /
systemd       1           root  rtd       DIR              253,1      4096          2 /
systemd       1           root  txt       REG              253,1   1478184     397653 /usr/lib/systemd/systemd
systemd       1           root  mem       REG              253,1     20032     401603 /usr/lib64/libuuid.so.1.3.0
systemd       1           root  mem       REG              253,1    252704     401631 /usr/lib64/libblkid.so.1.1.0

每一列表示的含义分别是:

COMMAD: 命令
PID:进程id
TID:线程id
USER:用户
FD:文件描述符,比如:cwd当前工作目录;txt程序代码;0标准输入;1标准输出;2标准错误
TYPE:node类型,比如:sock即socket;DIR目录;IPv4等。
DEVICE:磁盘名
SIZE/OFF:文件大小
NODE:文件标识
NAME:文件名称

-a other-options

表示and(并且的关系)后面需跟至少1个option选项,默认是option选项的并集,加上-a后,取的是交集

-p {pid}

列出进程id为{pid}的所有文件

-d [fd][^fd]

列出所有fd列满足条件(包含或不包含[^])的文件。
比如列出不是txt类型的文件 -d ^txt。(txt表示程序代码,二进制文件或共享库)

-D {dir}

列出目录{dir}下打开的文件

+D {dir}

递归列出目录{dir}下打开的文件

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

列出满足条件的文件(与网络相关)

-u [user][^user]

列出用户打开的文件,比如 -u ^root,表示列出非root用户打开的文件

-n

显示时禁止转换成host名称,即显示ip。

-c {command}

显示通过{command}执行的进程所打开的文件

用法示例

判断端口是否处于监听状态

[~]# lsof -i :30200
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    7970 root  264u  IPv4 73771077      0t0  TCP *:30200 (LISTEN)

使用netstat -nlp | grep :30200命令也能达到同样效果。

列出进程在访问的已删除文件

[~]# lsof +L1
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NLINK   NODE NAME
systemd-j  346 root  txt    REG  253,1   278808     0 397790 /usr/lib/systemd/systemd-journald;58a43c2a (deleted)
systemd-l  468 root  txt    REG  253,1   584560     0 397448 /usr/lib/systemd/systemd-logind;58a43c2a (deleted)
java      3374 root    4r   REG  253,1   526844     0 403168 /mnt/deploy/slave.jar (deleted)

+L[number], 会列出链接数量比number小的文件,所以+L1表示链接数量小于1,也就是没有链接的文件。

列出文件占用情况

lsof /dev/random:列出哪些进程在使用/dev/random(用于产生随机数)

上一篇下一篇

猜你喜欢

热点阅读