linux lsof命令

lsof是Linux系统中用于查看进程打开文件信息的命令,包括进程ID、用户、文件描述符、文件类型等详细信息。它能显示进程对文件、目录、网络文件的占用情况。本文介绍了lsof的基本用法、参数选项、常见示例,如查看特定用户、进程或端口的文件操作,并提供了清理已删除但占用磁盘空间的文件的方法。
摘要由CSDN通过智能技术生成

概要

lsof的全称是list of open file

顾名思义,这个命令展示进程打开文件的信息。在linux中,文件夹、普通文件、socket、有名管道、unix domain socket这些都是属于文件范畴。An open file may be a regular file, a directory, a block special file, a character special file, an executing text reference, a library, a stream or a network file (Internet socket, NFS file or UNIX domain socket.)

标准输出信息

名称

解释

COMMAND

启动命令

PID

进程id

USER

用户名

FD

文件描述符

TYPE

文件类型

DEVICE

设备id,对于目录和普通文件分为major number和minor number,详见参考文献2

SIZE/OFF

文件大小或者偏移量

NODE

对于普通文件来说,指node number

NAME

文件名

FD详解

解释

cwd

当前目录

txt

可执行文件(code & data)

rtd

根目录

mem

memory-mapped文件

mmap

memory-mapped设备

对于普通文件的文件句柄,后面还可能会跟一个符号,如2w

符号

解释

r

只读

w

只写

u

读写

常用参数

符号

含义

-u

只看特定用户

-c

只看特定进程名

-a

多个flag使用‘与’逻辑,默认之用‘或’逻辑进行展示

-p

只看特定进程

+D

只看特定文件夹,递归展示子文件夹

+d

只看特定文件夹,不递归展示子文件夹

-r/+r

使用repeat模式,定时展示

-i

只看network文件,eg. -i tcp 或 -i :{port-number}

示例

展示服务器上所有进程打开的文件

lsof

展示某个用户所有进程打开的文件

lsof -u {username}

展示某个用户下的某个进程名打开的文件

lsof -u {username} -c {process-name} -a

展示某个进程id下打开的文件

lsof -p {process-id}

展示某个文件夹下所有打开文件对应的进程

lsof +D {dir-path}

展示某个端口所对应的进程

lsof -i :{port-number}

小技巧

杀掉某个用户名下的所有进程

kill -9 `lsof -t -u {username}`

有时候一个文件被删除掉了(通过ls命令找不到它),但通过df命令发现它仍然占据磁盘空间,这时可以用以下命令进行定位

lsof {path} | grep deleted

参考文献

  1. Using lsof Command in Linux with Examples
  2. Linux系统设备(device)的major和minor number_hengshan的专栏-CSDN博客_linux major
  3. https://www.geeksforgeeks.org/lsof-command-in-linux-with-examples/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值