lsof命令的那些事

1、lsof命令概述

lsof(List Open Files)是一种命令行监控工具。主要用来获取被进程打开文件的信息 和 当前正在访问它们的进程的信息。
确定当前正在使用特定文件或端口的进程,这在发生端口冲突时尤其重要。

  1. 检测已删除但仍被进程打开的文件,这可能会导致不必要的空间消耗。
  2. 帮助有效地排除错误,例如“端口已在使用中”。
  3. 跟踪网络活动并打开网络连接以进行监控。
  4. 调查文件访问模式,有助于识别潜在的安全漏洞。

2、lsof命令基本语法

# 安装
yum install -y lsof
# 查看版本
lsof -v

lsof命令会根据名称对应的选项显示相关结果。
lsof [选项] [名称:如 文件名、PID、用户名、网络文件(IPv4、IPv6)]
lsof -i
不带任何参数执行lsof命令会输出当前所有活跃进程打开的所有文件
lsof | more

注意:要以适当的权限使用 lsof 命令,有关进程和网络连接的一些信息可能需要提升为超级用户权限,可使用“sudo”运行该命令。
在这里插入图片描述

  • COMMANDPIDUSER 分别表示 进程名进程ID所属用户。第一列中 systemd 的进程ID是 1,它是一个守护进程。

  • FD 是文件描述符,下面是可能的类型以及说明
    cwd:当前目录;                       txt :txt文件;
    rtd:root目录;                        mem:内存映射文件;

  • TYPE 是文件类型,下面是可能的值以及说明
    DIR:目录;                               REG:普通文件;                       CHR:字符;
    a_inode:Inode文件;              FIFO:管道或者socket文件;    netlink:网络;
    unknown:未知;

  • DEVICE 表示设备ID。

  • SIZE/OFF 表示进程大小。

  • NODE 表示文件的 Inode 号。

  • NAME 表示路径或者链接。

2.1、列出网络进程信息(所有打开了的网络文件)

显示有关具有网络连接的进程的信息,例如侦听套接字或已建立的连接。

 lsof -i

在这里插入图片描述

2.2、实时监控指定端口(列出在指定端口上打开的文件)

每 3 秒更新一次持续监控端口 22 上相关的进程。

lsof -i:22 -r3

在这里插入图片描述

每 5 秒更新一次持续监控所有端口上相关的进程。

lsof -i -r5

每 5 秒更新一次持续监控所有端口上“已建立”的连接的相关的进程。

lsof -i -E -r10

2.3、列出使用了指定协议(TCP/UDP) 的文件

使用 lsof -i TCP/UDP 列出使用了TCP 或 UDP 协议的文件

列出有关在 1 到 1024 的指定端口范围内打开 TCP 连接的进程的信息

lsof -i tcp:3306

每 3 秒更新一次持续实时监控指定端口范围 1 到 1024 内打开的 TCP 连接进程信息。

lsof -i TCP:1-1024 -r3

2.4、列出指定用户已打开的文件

使用 -u 选项可以列出指定用户已经打开的文件,该选项后面可以接多个用户名,每个用户名之间用空格隔开,表示列出所有指定用户已打开的所有文件。

lsof -u root | more

在这里插入图片描述

排除指定用户已经打开的文件,可以在用户名前加 ^ 符号。

lsof -u ^rppt | more

2.5、找出打开着但已被删除了的文件

lsof -u root | grep deleted

2.6、列出所有 IPV4/6 网络文件

列出所有已经打开了的 ipv4 网络文件
lsof -i 4

列出所有已经打开了的 ipv6 网络文件
lsof -i 6

2.7、列出目录中所有打开的文件

+D+d 选项都是列出目录中打开的文件。
+D 选项会列出一个目录和其子目录中打开的文件,而 +d 选项只会列出当前目录下已打开的文件。

lsof +D /user/local
lsof +d /user/local

2.8、列出指定进程ID打开的文件

-p 选项后面可以指定多个进程ID,每个进程ID之间用逗号分隔,如果想排除掉某个进程打开的文件,可以在该进程ID前面加上^符号。

lsof -p 15319

lsof -p 111,222,344,^433

2.9、杀死指定用户的所有进程

kill -9 `lsof -t -u michael`

lsof -u michael 是列出tt用户所有打开的文件,加上-t 选项之后表示结果只列出PID列,kill -9 表示强制结束指定的进程。

3、小尾巴

lsof 命令还有很多其他的用法,学会使用man文档才是正途。O(∩_∩)O哈哈~

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值