Linux lsof命令详解

简介

lsof命令用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、DUP)。找回/恢复删除的文件。是十分方便的系统监视工具,应为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该程序分配了一个描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。应为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将很有帮助

语法格式

lsof (选项)

选项
选项描述
-a列出打开文件存在的进程
-c<进程名>列出指定进程所打开的文件
-g列出GID号进程详情
-d<文件号>列出终于该文件号的进程
+d<目录>列出目录下被打开的文件
-D<目录>递归列出目录下被打开的文件
-n<目录>列出使用NFS的文件
-i<条件>列出符合条件的进程
-p<进程号>列出指定进程号所打开的文件
-u列出UID号进程详情
-h显示帮助信息
-v显示版本信息
示例

列出所有打开的文件

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 /

lsof输出各列信息的意义
COMMAND			进程的名称
PID				进程的标识符
PPID			父进程标识符(需指定—R参数)
USER			进程的所有者
FD				文件描述符,应用程序通过文件描述符识别该文件
DEVICE			指定磁盘的名称
SIZE			文件的大小
NODE			索引节点(文件在磁盘上的标识)
NAME			打开文件的确切名称
常用用法

列出所有打开的文件

[root@boke ~]# 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 /

列出所有的网络连接

[root@boke ~]# lsof -i
COMMAND     PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
chronyd     512 chrony    1u  IPv4    12811      0t0  UDP localhost:323 
chronyd     512 chrony    2u  IPv6    12812      0t0  UDP localhost:323 
sshd        986   root    3u  IPv4    15015      0t0  TCP *:ssh (LISTEN)
nginx     10333   root    6u  IPv4   171175      0t0  TCP *:http (LISTEN)
nginx     10333   root   10u  IPv4   204723      0t0  TCP *:https (LISTEN)

列出所有tcp连接

[root@boke ~]# lsof -i tcp
COMMAND     PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd        986   root    3u  IPv4    15015      0t0  TCP *:ssh (LISTEN)
nginx     10333   root    6u  IPv4   171175      0t0  TCP *:http (LISTEN)
nginx     10333   root   10u  IPv4   204723      0t0  TCP *:https (LISTEN)
nginx     12802 nobody    6u  IPv4   171175      0t0  TCP *:http (LISTEN)
nginx     12802 nobody   10u  IPv4   204723      0t0  TCP *:https (LISTEN)

列出所有udp连接

[root@boke ~]# lsof -i udp
COMMAND    PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
chronyd    512 chrony    1u  IPv4    12811      0t0  UDP localhost:323 
chronyd    512 chrony    2u  IPv6    12812      0t0  UDP localhost:323 
chronyd    512 chrony    5u  IPv4 12815419      0t0  UDP boke:46188->10.143.0.45:ntp 
dhclient 11589   root    7u  IPv4 11726634      0t0  UDP *:bootpc 

列出谁在使用某个端口

[root@boke ~]# lsof -i :80
COMMAND     PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx     10333   root    6u  IPv4   171175      0t0  TCP *:http (LISTEN)
nginx     12802 nobody    6u  IPv4   171175      0t0  TCP *:http (LISTEN)
AliYunDun 27562   root   22u  IPv4 11779645      0t0  TCP boke:54272->100.100.30.26:http (ESTABLISHED)

列出某个程序打开的文件信息

[root@boke home]# lsof -c nginx
COMMAND   PID   USER   FD      TYPE             DEVICE SIZE/OFF    NODE NAME
nginx   10333   root  cwd       DIR              253,1     4096 1182046 /opt/install/nginx
nginx   10333   root  rtd       DIR              253,1     4096       2 /
nginx   10333   root  txt       REG              253,1  5872680 1182048 /opt/install/nginx/sbin/nginx
nginx   10333   root  mem       REG              253,1    61624  265462 /usr/lib64/libnss_files-2.17.so

列出某个用户打开的文件信息

[root@boke home]# lsof -u root

列出某个用户活跃的网络端口

[root@boke ~]# lsof -a -u root -i
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd        986 root    3u  IPv4    15015      0t0  TCP *:ssh (LISTEN)
nginx     10333 root    6u  IPv4   171175      0t0  TCP *:http (LISTEN)
nginx     10333 root   10u  IPv4   204723      0t0  TCP *:https (LISTEN)
dhclient  11589 root    7u  IPv4 11726634      0t0  UDP *:bootpc 
java      12916 root    6u  IPv4 11198528      0t0  TCP boke:8090->li1828-46.members.linode.com:42198 (ESTABLISHED)
java      12916 root   31u  IPv4   218040      0t0  TCP *:8090 (LISTEN)
java      12916 root   33u  IPv4   224678      0t0  TCP boke:8090->178-73-

列出除了某个用户外的被打开文件信息

[root@boke ~]# lsof -u ^root
COMMAND     PID TID    USER   FD      TYPE             DEVICE SIZE/OFF    NODE NAME
dbus-daem   482        dbus  cwd       DIR              253,1     4096       2 /
dbus-daem   482        dbus  rtd       DIR              253,1     4096       2 /
dbus-daem   482        dbus  txt       REG              253,1   223320  269686 /usr/bin/dbus-daemon
dbus-daem   482        dbus  mem       REG              253,1    61624  265462 /usr/lib64/libnss_files-2.17.so

查看谁在使用某个文件

[root@boke opt]# lsof nohup.out 
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    18554 root    1w   REG  253,1   397455 1182113 nohup.out
java    18554 root    2w   REG  253,1   397455 1182113 nohup.out
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值