Linux命令_lsof 网络/文件监控
创始人
2025-06-01 20:48:34
0

官方描述

        一个打开的文件可以是一个常规文件、一个目录、一个块特殊文件、一个字符特殊文件、一个执行文本引用、一个库、一个流或一个网络文件(Internet套接字、NFS文件或UNIX域套接字)。 可以通过路径选择文件系统中的某个文件,也可以选择文件系统中的所有文件。
        lsof将产生可由其他程序解析的输出,而不是格式化的显示。 有关更多信息,请参阅-F、选项描述和OUTPUT FOR OTHER PROGRAMS部分。
        除了生成单个输出列表外,lsof还将以重复模式运行。 在重复模式下,它将产生输出,延迟,然后重复输出操作,直到用中断或退出信号停止。 更多信息请参见+|-r [t[m]]选项说明。

目录

1. 语法

1.1. 常用参数

2. 列名解释

3. 使用技巧

4. 指定查询

4.1. 指定某个command

4.2. 指定某个用户

4.3. 指定某个PID

4.4. 指定某个目录下打开的文件

4.5. 指定FD类型

5. 查询网络类

6. 查询删除文件

6.1. 恢复误删文件

6.2. 删除物理文件后空间未释放

6.3. 检查句柄


1. 语法

lsof  [option]  [command]

1.1. 常用参数

-c[cmd]  :指定command列(多个command需要使用多个 -c)
-u[user] :指定用户(多个用户以逗号分隔)
-p[pid]  :指定PID (多个PID以逗号分隔)
+d[path] :指定目录文件下存在的进程
+D[path] :指定目录文件下存在的进程(递归),多个目录下以空格分隔
+c[num]  :指定命令宽度
-d[FD]   :指定FD(多个类型以逗号分隔)
[option]^:取反,不指定xxx# -u ^u1,^u2:输出用户u1、u2以外的其他用户信息
-a:后面的选项必须都满足(and)# -a -u [user] -p [pid] -c [cmd]:指定的选项必须都满足
-i:仅显示 ipv4/ipv6 的列表# -i 4:仅显示ipv4信息# -i 6:仅显示ipv6信息# -i tcp:仅显示ipv4/ipv6中tcp信息# -i udp:仅显示ipv4/ipv6中udp信息# -i :1-100:列出1-100所有端口信息
-K:仅显示含有TID的列表
-t:仅显示PID这一列
-T:禁用TCP/TPI信息
-X:禁用TCP/UDP文件
-n:无主机名(快速查找)
-P:无端口名称
-O:没有开销(有风险)
-l:列出UID编号
-o:列出文件偏移量
-s:列表文件大小
-R:加入一列PPID
-U:选择Unix套接字
-N:选择NFS文件   
+m[m]:使用|创建挂载补充
-?:帮助
-h:帮助
-v:列出版本信息 
-V:详细的搜索

2. 列名解释

(示例)

COMMAND    PID  TID    USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
dconf     2900 2903      yt  DEL       REG               0,40               40904 /run/user/1001/dconf/user
dconf     2900 2903      yt  mem       REG                8,3    143781   3291432 /usr/share/glib-2.0/schemas/gschemas.compiled
dconf     2900 2903      yt  mem       REG                8,3    107020   1104620 /usr/share/locale/zh_CN/LC_MESSAGES/glib20.mo
dconf     2900 2903      yt  mem       REG                8,3     81139    163028 /usr/share/locale/zh_CN/LC_MESSAGES/libc.mo
dconf     2900 2903      yt  mem       REG                8,3     85324   2480242 /usr/share/locale/zh_CN/LC_MESSAGES/gtk30.mo
dconf     2900 2903      yt  mem       REG                8,3      9533   1104668 /usr/share/locale/zh_CN/LC_MESSAGES/atk10.mo
dconf     2900 2903      yt  mem       REG                8,3     26970  33738983 /usr/lib64/gconv/gconv-modules.cache

 (解释说明)

COMMAND :包含与进程关联的UNIX命令名的前9个字符。如果为 +c w 选项指定了非零w值,则该列包含与进程关联的UNIX命令名的前w个字符,直到UNIX提供给lsof的字符限制为止。
PID     :进程PID
TID     :如果方言支持任务(线程)报告,并且列出了任务(线程),则为任务(线程)标识号。
USER    :用户名
TYPE    :是与文件相关联的节点类型-例如,GDIR, GREG, VDIR, VREG等
DEVICE  :包含设备号,以逗号分隔,用于字符特殊、块特殊、常规、目录或NFs文件
SIZE/OFF:文件大小(单位:字节)
NODE    :本地文件的节点号
NAME    :文件所在的挂载点和文件系统的名称
FD      :文件的文件描述符编号# cwd  当前工作目录# Lnn  库引用(AIX)# err  FD信息错误(见NAME列)# jld  监狱目录(FreeBSD)# ltx  共享库文本(代码和数据)# Mxx  十六进制内存映射类型号xx# m86  DOS合并映射文件# mem  内存映射文件# mmap 内存映射装置# pd   父目录# rtd  根目录# tr   内核跟踪文件(OpenBSD)# txt  程序文本(代码和数据)# v86  VP/ix映射文件
FD后面跟着这些字符之一,描述文件打开的模式:# r 用于读访问# w 用于写访问# u 用于读写访问# - 如果模式未知,后面跟着锁字符# 空格 表示模式未知且后面没有锁定字符
mode字符后面跟着一个锁字符,描述应用到文件的锁类型:# N 对于未知类型的Solaris NFS锁# r 用于文件部分的读锁# R 对于整个文件的读锁# w 用于对文件的一部分进行写锁# W 对于整个文件的写锁# u 对于任意长度的读写锁# U 对于未知类型的锁# x 对于SCO OpenServer Xenix锁的部分文件# X SCO OpenServer Xenix锁定整个文件# 空格 如果没有锁
PPID            :父ID(-z 指定)。
PGID            :进程组标识号(-g 指定)。
ZONE            :为Solaris 10及以上版本的分区名称(-z指定)。
SECURITY-CONTEXT:是SELinux安全上下文(-Z指定)。注意:在运行的Linux内核中禁用SELinux时,-Z选项将被抑制。
FILE-ADDR       :当f被指定为+f时,包含内核文件结构地址.
FCT             :当c被指定为+f时,包含来自内核文件结构的文件引用计数
NLINK           :当指定+L时,包含文件链接计数
FILE-FLAG       :当g或g被指定为+f时,该字段包含内核文件结构的f_flag[s]成员的内容和内核的每个进程打开文件标志(如果可用);' G'使它们以十六进制显示;“g”,作为简称;可以显示两个列表,条目之间用逗号分隔,列表之间用分号(';')分隔;第一个列表可以包含下表中f_flag[s]值的简写名称:# AIO: 异步I/O(例如,FAIO)# AP: 附加# ASYN: 异步I/O(例如,FASYNC)# BAS: block, test, set在使用中# BKIU: 在使用时阻塞# BL: 使用块偏移量# BSK: 块寻求# CA: 避免副本# CIO: 并发I / O# CLON: 克隆# CLRD: CL读# CR: 创建# DF: 推迟# DFI: 推迟印第安纳州# DFLU: 数据刷新# DIR: 直接# DLY: 延迟# DOCL: 做克隆# DSYN: 数据完整性# DTY: 必须是目录# EVO: 活动只# EX: 开放执行# EXCL: 独家开# FSYN: 同步写道# GCDF: 在unp_gc()期间延迟(AIX)# GCMK: unp_gc()期间的标记(AIX)# GTTY: 通过/dev/tty访问# HUP: HUP进行中# KERN: 内核# KIOC: kernel-issued ioctl# LCK: 有锁# LG: 大文件# MBLK: 流消息块# MK: mark# MNT: mount# MSYN: 多路同步# NATM: 不要更新时间# NB: 非阻塞I / O# NBDR: 没有BDRM检查# NBIO: SYSV非阻塞I/O# NBF: n缓冲生效# NC: 没有缓存# ND: 没有延迟# NDSY: 无数据同步# NET: 网络# NFLK: 不要点击链接# NMFS: NM文件系统# NOTO: 关闭背景停止# NSH: 没有分享# NTTY: 无控制TTY# OLRM: OLR的镜子# PAIO: POSIX异步I/O# PP: POSIX管# R: 读# RC: 文件和记录锁定缓存# REV: 撤销# RSH: 分享阅读# RSYN: 读同步# RW: 读写访问# SL: 共享锁# SNAP: 煮熟的快照# SOCK: 套接字# SQSH: 顺序共享设置打开# SQSV: 序列SVM设置开启# SQR: 序列集修复打开# SQS1: 顺序全共享打开# SQS2: 顺序部分共享打开# STPI: 停止I / O# SWR: 同步阅读# SYN: 写入时文件完整性# TCPM: 避免TCP冲突# TR: 截断# W: 写# WKUP: 并行I/O同步# WTG: 并行I/O同步# VH: vhangup等待# VTXT: 虚拟文本# XL: 独占锁

3. 使用技巧

快速查询结果使用 -n (不显示主机名)

  • 为什么不显示主机名?
  • 查询过程中非常慢,影响速度且实际作用并不大。

分页查询 + more 命令

  • 为什么分页查询?
  • 因为lsof在没有过滤的情况下信息很多,分页查询更方便。

同时过滤使用 -a(and)

  • 为什么使用 -a 过滤?
  • 因为lsof在没有使用-a的情况下并不会同时过滤多个条件,这也是为了方便扩展。需要在其他参数前加上 -a 参数。

简单示例:

# 快速查询 + 分页查询
lsof -n |more# 指定的选项必须同时满足
lsof -a -u [user] -p [pid] -c [cmd]
lsof -an -u [user] -p [pid] -c [cmd] |more

4. 指定查询

4.1. 指定某个command

# 指定单个command列
lsof -c [command]# 指定多个command列
lsof -c [command1] -c [command2] -c [command3]# 排除某个command
lsof -c ^[command]# 指定某个用户下的command列(需要-a过滤)
lsof -a -u [user] -c [command]

4.2. 指定某个用户

# 指定单个用户
lsof -u [user]# 指定多个用户
lsof -u [user1],[user2],[user3]# 除某个用户下的其他信息(取反)
lsof -u ^[user]# 除多个用户下的其他信息(取反),需要注意指定的用户必须存在,否则报错
lsof -u ^[user1],^[user2],^[user3]

4.3. 指定某个PID

# 指定单个pid
lsof -p [pid]# 指定多个pid
lsof -p [pid1],[pid2],[pid3]# 排除某个pid
lsof -p ^[pid]

4.4. 指定某个目录下打开的文件

+d[path] :指定目录文件下存在的进程
+D[path] :指定目录文件下存在的进程(递归),多个目录下以空格分隔建议使用+D,+d无法递归# 指定单个目录
lsof +D [path]# 指定多个目录(以空格分隔)
lsof +D [path1] [path2] [path3]

4.5. 指定FD类型

# 指定单个类型
lsof -d [type]# 指定多个类型
lsof -d [type1],[type1],[type1]类型说明:# cwd  当前工作目录# Lnn  库引用(AIX)# err  FD信息错误(见NAME列)# jld  监狱目录(FreeBSD)# ltx  共享库文本(代码和数据)# Mxx  十六进制内存映射类型号xx# m86  DOS合并映射文件# mem  内存映射文件# mmap 内存映射装置# pd   父目录# rtd  根目录# tr   内核跟踪文件(OpenBSD)# txt  程序文本(代码和数据)# v86  VP/ix映射文件

5. 查询网络类

# 仅显示ipv4/ipv6的列表
lsof -i# 仅显示ipv4信息
lsof -i 4# 仅显示ipv6信息
lsof -i 6# 仅显示ipv4/ipv6中tcp信息
lsof -i tcp#  仅显示ipv4/ipv6中udp信息
lsof -i udp# 仅显示ipv4中tcp信息
lsof -a -i 4 -i tcp# 仅显示ipv6中udp信息
lsof -a -i 6 -i udp# 仅显示占用3306端口信息
lsof -i :3306# 仅显示占用1-1000端口信息
lsof -i :1-1000# 禁用TCP/TPI信息
lsof -T# 禁用TCP/UDP文件
lsof -X

6. 查询删除文件

6.1. 恢复误删文件

前提条件

  • 必须是正在运行中的文件,进程还存在
# 检查该文件是否还存在
lsof -n |grep delete |grep [进程名]# 查看伪文件 /proc
ll /proc/[PID]/fd# 将伪文件下fd拷贝过来即可
cp /proc/[PID]/fd/255 ./

 

6.2. 删除物理文件后空间未释放

描述

  • 清理物理文件后,df 查看磁盘发现空间并没有释放

示例:删除5GB物理文件后,空间并没有释放

 

# 查询已删除但进程未结束的进程,杀掉即可
lsof -n |grep delete# 杀掉单个进程
kill -9 [PID]# 杀掉全部进程
lsof -n |grep delete |awk '{print $2}' |xargs kill -9

 

 

 

6.3. 检查句柄

小技巧

  • 使用root用户查询的进程更全面
# 查看单个进程最大句柄数
ulimit -n# 排序查看进程一打开的句柄数(第一列:句柄数,第二列:PID)
lsof -n |awk '{print $2}' |sort |uniq -c |sort -nr# 查看打开句柄数超过1000的PID(第一列:句柄数,第二列:PID)
lsof -n |awk '{print $2}' |sort |uniq -c |sort -nr |awk '$1 > 1000 {print $0}'# 查看句柄超过1000的进程信息
ps u -p `lsof -n |awk '{print $2}' |sort |uniq -c |sort -nr |awk '$1 > 1000 {print $2}' |xargs |tr ' ' ,`

 

相关内容

热门资讯

银河证券:短期内A股市场或仍维... 银河证券发布A股策略研报称,近期板块轮动速度加快,行情震荡格局尚未改变,市场成交额未出现明显放量,仍...
哪吒汽车,注定掉队 哪吒汽车,... 定焦One(dingjiaoone)原创特约作者 | 胡锟编辑 | 魏佳从登顶新势力销量冠军,到几乎...
牛市早报|端午假期预计全社会跨... 【市场数据】截至5月30日收盘,上证综指跌0.47%,报3347.49点;科创50指数跌0.94%,...
黄酒真的雄起了? 黄酒真的雄起... 斑马消费 杨伟2025年A股酒水板块“冰火两重天”,白酒承压,啤酒失速,黄酒却异军突起!Wind 5...
一台不到600元,魅族新机大火... 对于整个手机市场来说,华米OV等国产手机的市场大战已经日渐稳定,各家手机企业都处于平淡化的状态,就在...
港股稳定币概念暴涨!刘煜辉:人... 6月2日,在港股市场上,数字货币概念股集体拉升,连连数字盘中一度上涨80%,移卡一度涨近50%,欧科...
又现百万罚单 消金合作机构管理... 北京商报讯(记者 岳品瑜 董晗萱)消费金融机构的一张新罚单,又指向合作业务管理。6月2日,北京商报记...
国际金价重返高位 炒金是否卷土... 6月2日,国际金价重返3300美元/盎司高位,截至北京商报记者发稿,金价涨幅超过2%,盘中突破336...
股价翻倍基金霸屏 创新药否极泰... 证券时报记者 裴利瑞今年以来,中国创新药行业正经历了一场前所未有的价值重估,而且在近期呈现加速趋势。...
5000亿人民币新型融资政策工... 内容提要:中国计划推出5000亿元新型政策性金融工具,重点投向新基建与消费领域,以对冲出口压力。但企...
美国5月ISM制造业PMI连续... 6月2日周一,ISM公布的数据显示,美国5月ISM制造业活动连续三个月萎缩,在关税上调的背景下,进口...
国内油价或现年内第四涨 加满一...   中新经纬6月3日电 (万可义)国内成品油新一轮调价窗口将于6月3日24时开启。综合机构观点,国内...
道指三连阳!美股6月开门红,黄... *三大股指上扬,纳指涨近0.7%;*中长期美债收益率走高,基准10年期美债报4.61%;*受特朗普言...
结构性行情或延续,券商建议6月... 经历5月冲高回落后,A股6月行情即将拉开帷幕。展望后市表现,当前机构多数持相对谨慎态度,认为市场短期...
马斯克卸任DOGE后旗下公司迎... 马斯克重返其商业帝国、远离政治后,其旗下公司迅速开启一系列融资,包括xAI正在启动一项3亿美元的股份...
媒体称美国秘密提案允许低浓缩铀... 媒体报道,美国对伊核谈判政策出现180度转变,美国政府上周六向伊朗提出一份新的核协议提案,其中允许伊...
一笔漂亮的退出:93亿卖始祖鸟... (图片由豆包AI生成) 消费赛道又一明星公司被减持了。5月29日,据彭博社消息,始祖鸟母公司亚玛芬体...
速腾聚创一季度毛利同比增七成 ...   速腾聚创第二代灵巧手Papert 2.0。  5月30日,速腾聚创发布2025年第一季度财报。据...
“消费+科技”双轮驱动,港股市... 港股IPO市场正经历显著回暖,优质资产供给逐步改善,市场流动性增强,吸引了大量资金关注。Wind资讯...
从一面之恩到千亿帝国CEO,安... 近日,吉利汽车管理层大调整引发行业聚焦。在吉利一季度财报发布的当天,吉利控股集团宣布重大人事调整:极...