当前位置: 首页 > news >正文

Linux系统之lsof命令的基本使用

Linux系统之lsof命令的基本使用

  • 一、lsof命令的基本使用
  • 二、lsof命令的使用帮助
    • 2.1 lsof命令的help帮助信息
    • 2.2 lsof命令帮助解释
  • 三、lsof的基本使用
    • 3.1 直接使用lsof命令
    • 3.2 查看某个进程打开的所有文件
    • 3.3 查看某个用户打开的所有文件
    • 3.4 查看某个文件被哪些进程打开
    • 3.5 查看某个端口被哪些进程占用
    • 3.6 查看某个目录下被哪些进程打开的文件
    • 3.7 查看打开某个类型文件的进程列表
  • 四、lsof使用注意事项

在这里插入图片描述

一、lsof命令的基本使用

lsof(list open files)命令是用于查看系统中打开文件的工具,可以列出当前系统打开的所有文件(包括文件、文件夹、网络连接等),可以帮助我们查找一些占用磁盘空间或者占用网络带宽的进程。

二、lsof命令的使用帮助

2.1 lsof命令的help帮助信息

查看lsof命令的help帮助信息

[root@jeven ~]# lsof --help
lsof: illegal option character: -
lsof: -e not followed by a file system path: "lp"
lsof 4.87latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQlatest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_manusage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s][-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.-?|-h list help          -a AND selections (OR)     -b avoid kernel blocks-c c  cmd c ^c /c/[bix]  +c w  COMMAND width (9)    +d s  dir s files-d s  select by FD set   +D D  dir D tree *SLOW?*   +|-e s  exempt s *RISKY*-i select IPv[46] files  -K list tasKs (threads)    -l list UID numbers-n no host names         -N select NFS files        -o list file offset-O no overhead *RISKY*   -P no port names           -R list paRent PID-s list file size        -t terse listing           -T disable TCP/TPI info-U select Unix socket    -v list version info       -V verbose search+|-w  Warnings (+)       -X skip TCP&UDP* files     -Z Z  context [Z]-- end option scan+f|-f  +filesystem or -file names     +|-f[gG] flaGs-F [f] select fields; -F? for help+|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)+m [m] use|create mount supplement+|-M   portMap registration (-)       -o o   o 0t offset digits (8)-p s   exclude(^)|select PIDs         -S [t] t second stat timeout (15)-T qs TCP/TPI Q,St (s) info-g [s] exclude(^)|select and print process group IDs-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]+|-r [t[m<fmt>]] repeat every t seconds (15);  + until no files, - forever.An optional suffix to t is m<fmt>; m must separate t from <fmt> and<fmt> is an strftime(3) format for the marker line.-s p:s  exclude(^)|select protocol (p = TCP|UDP) states by name(s).-u s   exclude(^)|select login|UID set s-x [fl] cross over +d|+D File systems or symbolic Linksnames  select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.

2.2 lsof命令帮助解释

  • 语法
lsof [选项] [文件、目录名或进程ID]
  • 选项
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息

三、lsof的基本使用

3.1 直接使用lsof命令

使用lsof命令可以列出当前系统中打开的所有文件和网络连接,包括哪些进程打开了哪些文件、哪些网络连接被哪些进程使用等等。

lsof
command     PID USER   FD      type             DEVICE     SIZE       NODE NAME

在这里插入图片描述

COMMAND列:打开文件的进程的名称。
PID列:打开文件的进程的标识符。
USER列:打开文件的进程的所有者。
FD列:打开文件的进程的文件描述符。
TYPE列:打开文件的类型,如REG(常规文件)、DIR(目录)、CHR(字符设备)、FIFO(管道)、SOCK(套接字)等。
DEVICE列:打开文件所在的设备的编号。
SIZE/OFF列:文件的大小或偏移量。
NODE列:打开文件的节点号码。
NAME列:打开文件的路径和文件名。

3.2 查看某个进程打开的所有文件

例如查询sshd服务进程的PID号

[root@jeven ~]# ps aux |grep ssh
root       9347  0.0  0.0 112756  4312 ?        Ss   06:22   0:00 /usr/sbin/sshd -D
root      30102  0.0  0.0 161316  6052 ?        Ss   17:14   0:00 sshd: root@pts/1
root      30109  0.0  0.0 161312  6040 ?        Ss   17:14   0:00 sshd: root@notty
root      30154  0.0  0.0  74176  2940 ?        Ss   17:14   0:00 /usr/libexec/openssh/sftp-server
root      31429  0.0  0.0 112712   968 pts/1    S+   18:57   0:00 grep --color=auto ssh

使用lsof查询该进程打开的所有文件

lsof -p 9347

在这里插入图片描述

3.3 查看某个用户打开的所有文件

查看某个用户打开的所有文件

[root@jeven ~]# lsof -u apache |head
COMMAND   PID   USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
httpd   31674 apache  cwd       DIR              253,0      278       64 /
httpd   31674 apache  rtd       DIR              253,0      278       64 /
httpd   31674 apache  txt       REG              253,0   527736  8888916 /usr/sbin/httpd
httpd   31674 apache  mem       REG              253,0    37216  9300529 /usr/lib64/libnss_sss.so.2
httpd   31674 apache  mem       REG              253,0   105824  8467438 /usr/lib64/libresolv-2.17.so
httpd   31674 apache  mem       REG              253,0    31408  8467426 /usr/lib64/libnss_dns-2.17.so
httpd   31674 apache  mem       REG              253,0    61624  8467428 /usr/lib64/libnss_files-2.17.so
httpd   31674 apache  mem       REG              253,0    27720 51070491 /usr/lib64/httpd/modules/mod_cgi.so
httpd   31674 apache  mem       REG              253,0    68192  8541901 /usr/lib64/libbz2.so.1.0.6

3.4 查看某个文件被哪些进程打开

查看某个文件被哪些进程打开

[root@jeven ~]# lsof /usr/sbin/httpd
COMMAND   PID   USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
httpd   31673   root txt    REG  253,0   527736 8888916 /usr/sbin/httpd
httpd   31674 apache txt    REG  253,0   527736 8888916 /usr/sbin/httpd
httpd   31675 apache txt    REG  253,0   527736 8888916 /usr/sbin/httpd
httpd   31676 apache txt    REG  253,0   527736 8888916 /usr/sbin/httpd
httpd   31677 apache txt    REG  253,0   527736 8888916 /usr/sbin/httpd
httpd   31678 apache txt    REG  253,0   527736 8888916 /usr/sbin/httpd

3.5 查看某个端口被哪些进程占用

查看所有网络连接

lsof -i

查看某个端口被哪些进程占用

[root@jeven ~]# lsof  -i :22
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     9347 root    3u  IPv4  59897      0t0  TCP *:ssh (LISTEN)
sshd     9347 root    4u  IPv6  59899      0t0  TCP *:ssh (LISTEN)
sshd    30102 root    3u  IPv4 259806      0t0  TCP jeven.dhcp-route:ssh->DESKTOP-R1B8FG7.dhcp-route:58104 (ESTABLISHED)
sshd    30109 root    3u  IPv4 258689      0t0  TCP jeven.dhcp-route:ssh->DESKTOP-R1B8FG7.dhcp-route:58107 (ESTABLISHED)

3.6 查看某个目录下被哪些进程打开的文件

查看某个目录下被哪些进程打开的文件

[root@jeven ~]# lsof +D /tmp
COMMAND     PID     USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
fastgithu  8959     root  mem-R  REG              253,0     4096   1017250 /tmp/.dotnet/shm/global/FastGithub
fastgithu  8959     root    8u  unix 0xffff930eaf1e5800      0t0     52317 /tmp/dotnet-diagnostic-8959-1410-socket
fastgithu  8959     root  108r   DIR              253,0       20 219680441 /tmp/.dotnet/shm
fastgithu  8959     root  109uR  REG              253,0     4096   1017250 /tmp/.dotnet/shm/global/FastGithub
postmaste  9582 postgres    9u  unix 0xffff930d35c18800      0t0     66632 /tmp/.s.PGSQL.5432
X          9603     root    8u  unix 0xffff930d32916000      0t0     65977 /tmp/.X11-unix/X0
gnome-ses 12391      gdm   13u  unix 0xffff930d2c1e7c00      0t0     69454 /tmp/.ICE-unix/12391

3.7 查看打开某个类型文件的进程列表

查看打开某个类型文件的进程列表

[root@jeven ~]# lsof -t /usr/sbin/httpd
31673
31674
31675
31676
31677
31678

四、lsof使用注意事项

  • 需要root权限才能使用lsof命令。

  • lsof命令需要一定时间才能完成扫描,因此不应在生产环境下滥用。

  • 使用lsof命令时应确保使用的是最新版本,以防止出现已知的bug。

  • 使用时应仔细查看命令输出,尤其是对于打开套接字的程序及其连接,以避免意外暴露敏感信息。

  • lsof命令的扫描范围包括所有已打开的文件和网络套接字,因此执行时可能会对系统性能产生一定的影响,如果对性能敏感,应考虑使用其他更轻量级的工具。

  • 在使用lsof命令时,应确保已经对电脑进行了必要的安全保护,以避免受到黑客攻击或数据泄露。

相关文章:

Linux系统之lsof命令的基本使用

Linux系统之lsof命令的基本使用 一、lsof命令的基本使用二、lsof命令的使用帮助2.1 lsof命令的help帮助信息2.2 lsof命令帮助解释 三、lsof的基本使用3.1 直接使用lsof命令3.2 查看某个进程打开的所有文件3.3 查看某个用户打开的所有文件3.4 查看某个文件被哪些进程打开3.5 查看…...

性能压力测试的优势与重要性

性能压力测试是软件开发过程中至关重要的一环&#xff0c;它通过模拟系统在极限条件下的运行&#xff0c;以评估系统在正常和异常负载下的表现。这种测试为确保软件系统的可靠性、稳定性和可伸缩性提供了关键信息。下面将探讨性能压力测试的优势以及为什么在软件开发中它具有不…...

AtCoder Beginner Contest 329 题解A~F

A - Spread 输入字符串&#xff0c;字符之间加上空格输出 B - Next 输出数组当中第二大的数 C - Count xxx 统计每个字符出现过的最长长度&#xff0c;再累加即可 #include<bits/stdc.h> #pragma GCC optimize("Ofast") #define INF 0x3f3f3f3f #define I…...

Windows网络「SSL错误问题」及解决方案

文章目录 问题方案 问题 当我们使用了神秘力量加持网络后&#xff0c;可能会和国内的镜像源网站的之间发生冲突&#xff0c;典型的有 Python 从网络中安装包&#xff0c;如执行 pip install pingouin 时&#xff0c;受网络影响导致无法完成安装的情况&#xff1a; pip config…...

python数据可视化

绘制简单的折线图 1.1json数据格式 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据&#xff0c;其本质上是一个带有特定格式的字符串。 主要功能&#xff1a;json就是一种在各个编程语言中流通的数据格式&#xff0c;负责不同编程语言中的数据传递…...

LV.12 D18 中断处理 学习笔记

一、ARM的异常处理机制及工程代码结构 1.1异常概念 处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件 异常事件处理完成之后再返回到被异常打断的点继续执行程序。 1.2异常处理机制 不同的处…...

蓝桥杯每日一题2023.11.19

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 首先想到的方法为dfs去寻找每一个数&#xff0c;但发现会有超时 #include<bits/stdc.h> using namespace std; const int N 2e5 10; int n, cnt, a[N]; void dfs(int dep, int sum, int start) {if(dep 4){if(s…...

<b><strong>,<i><em>标签的区别

1. b标签和strong标签 b标签&#xff1a;仅仅是UI层面的加粗样式&#xff0c;并不具备HTML语义 strong标签&#xff1a;不仅是在UI层面的加粗样式&#xff0c;具备HTML语义&#xff0c;表示强调 2. i标签和em标签 i 标签&#xff1a;仅仅是UI层面的斜体样式&#xff0c;并不具备…...

c++中的特殊类设计

文章目录 1.请设计一个类&#xff0c;不能被拷贝2. 请设计一个类&#xff0c;只能在堆上创建对象3. 请设计一个类&#xff0c;只能在栈上创建对象4. 请设计一个类&#xff0c;不能被继承5. 请设计一个类&#xff0c;只能创建一个对象(单例模式) 1.请设计一个类&#xff0c;不能…...

开源更安全? yum源配置/rpm 什么是SSH?

文章目录 1.开放源码有利于系统安全2.yum源配置&#xff0c;这一篇就够了&#xff01;(包括本地&#xff0c;网络&#xff0c;本地共享yum源)3.rpm包是什么4.SSH是什么意思&#xff1f;有什么功能&#xff1f; 1.开放源码有利于系统安全 开放源码有利于系统安全 2.yum源配置…...

庖丁解牛:NIO核心概念与机制详解 04 _ 分散和聚集

文章目录 Pre概述分散/聚集 I/O分散/聚集的应用聚集写入Code Pre 庖丁解牛&#xff1a;NIO核心概念与机制详解 01 庖丁解牛&#xff1a;NIO核心概念与机制详解 02 _ 缓冲区的细节实现 庖丁解牛&#xff1a;NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片 概述 分散/聚…...

Java读写Jar

Java提供了读写jar的类库Java.util.jar&#xff0c;Java获取解析jar包的工具类如下&#xff1a; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Enumeration; import java.util.HashMap; import …...

【四元数简述】

w cos(theta/2) x ax * sin(theta/2) y ay * sin(theta/2) z az * sin(theta/2) 向量(x,y,z)是旋转轴 a 是任意正数 theta是旋转角度。 上面就是一个四元数表示旋转。 如何使用 空间中向量&#xff08;1,2,3&#xff09;扩展为&#xff08;0,1,2,3&#…...

ClickHouse SQL 查询优化

1 单表查询 1.1 Prewhere替代where Prewhere和where语句的作用相同&#xff0c;用来过滤数据。不同之处在于prewhere只支持 *MergeTree 族系列引擎的表&#xff0c;首先会读取指定的列数据&#xff0c;来判断数据过滤&#xff0c;等待数据过滤之后再读取select 声明的列字段来补…...

「Verilog学习笔记」数据选择器实现逻辑电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 将变量A、B接入4选1数据选择器选择输入端S0 S1。将变量C分配在数据输入端。从表中可以看出输出L与变量C的关系。 当AB00时选通D0而此时L0&#xff0c;所以数据端D0接0…...

【Go入门】Web工作方式

【Go入门】 Web工作方式 我们平时浏览网页的时候,会打开浏览器&#xff0c;输入网址后按下回车键&#xff0c;然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后&#xff0c;到底隐藏了些什么呢&#xff1f; 对于普通的上网过程&#xff0c;系统其实是这样做的&…...

综述:目标检测二十年(机翻版)(未完

原文地址 20年来的目标检测&#xff1a;一项调查 摘要关键词一 介绍二 目标检测二十年A.一个目标检测的路线图1)里程碑&#xff1a;传统探测器Viola Jones探测器HOG检测器基于可变形零件的模型&#xff08;DPM&#xff09; 2)里程碑&#xff1a;基于CNN的两阶段探测器RCNNSPPN…...

quinn源码解析:QUIC数据包是如何发送的

quinn源码解析&#xff1a;QUIC数据包是如何发送的 简介QUIC协议中的概念endpoint&#xff08;端点&#xff09;connection&#xff08;连接&#xff09;Stream&#xff08;流&#xff09;Frame (帧) 发包过程解析SendStream::write_allConnectionDriverEndpointDriver 简介 q…...

scss的高级用法——循环

周末愉快呀&#xff01;一起来学一点简单但非常有用的css小知识。 最近在一个项目中看到以下css class写法&#xff1a; 了解过tailwind css或者unocss的都知道&#xff0c;从命名就可以看出有以下样式&#xff1a; font-size: 30pxmargin-left: 5px;margin-top: 10px; 于是…...

Linux安装Chrome浏览器 -linux安装choeme

Linux 操作系统一般自带的浏览器是 FireFox&#xff0c;不过有些用户可能更喜欢 Google 出品的 Chrome 浏览器。本教程将介绍如何在 Linux 系统上安装 Chrome 浏览器&#xff0c;以及可能会遇到的一些问题解决方案。 下载 Chrome 安装包 需要下载 Chrome 的安装包。可以在 Go…...

从0到1落地智能仓储:C#上位机+Modbus RTU实现AGV集群调度与货物自动分拣

本文是纯实战、可直接落地的智能仓储完整方案,基于C# .NET 6 + Modbus RTU/Modbus TCP + AGV调度 + 自动分拣,从零搭建一套轻量级、低成本、高可靠的智能仓储系统,适用于电商仓库、工厂原料仓、成品仓、立体库。 无废话、无虚架构,代码可直接复制运行,适合新手从0到1上手智…...

基于Verilog的74LS181 ALU设计与Quartus II实现

1. 从零开始理解74LS181 ALU 第一次接触数字逻辑设计时&#xff0c;看到74LS181这个编号可能会觉得头大。其实这就是个经典的4位算术逻辑单元(ALU)芯片&#xff0c;相当于CPU中的"计算器"。我在大学实验室第一次用它做加法运算时&#xff0c;那种"原来计算机是这…...

[LaTeX] 使用minipage与subfigure实现高效多图排版(附代码型图片处理技巧)

1. 为什么需要minipage和subfigure&#xff1f; 写论文或者技术文档时&#xff0c;经常遇到需要把多张图片并排展示的情况。比如对比实验效果图、不同角度的产品展示、代码片段对比等。传统做法是每张图单独插入&#xff0c;但这样会导致图片间距不一致、对齐困难&#xff0c;最…...

霞鹜文楷屏幕阅读版:2025年最佳屏幕阅读字体解决方案

霞鹜文楷屏幕阅读版&#xff1a;2025年最佳屏幕阅读字体解决方案 【免费下载链接】LxgwWenKai-Screen LXGW WenKai for Screen Reading. 项目地址: https://gitcode.com/gh_mirrors/lx/LxgwWenKai-Screen 还在为长时间盯着屏幕阅读而感到眼睛疲劳吗&#xff1f;&#x1…...

【原创改进代码】基于信息间隙决策理论的多能系统-阶梯碳交易优化调度附Python代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

逆向工程实现原理深度解析:Hook技术高效突破百度网盘macOS版系统限制

逆向工程实现原理深度解析&#xff1a;Hook技术高效突破百度网盘macOS版系统限制 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS BaiduNetdiskPlugin-m…...

解决Swagger2集成中v2/api-docs接口404问题的关键:正确配置Docket分组

1. 为什么访问v2/api-docs会返回404&#xff1f; 这个问题困扰过不少开发者。当你兴冲冲地集成完Swagger2&#xff0c;打开swagger-ui.html页面&#xff0c;却发现页面一片空白&#xff0c;控制台报错显示v2/api-docs接口返回404。更让人抓狂的是&#xff0c;单独访问这个接口时…...

发那科机器人开机必看:示教器不亮时的3种紧急处理方案(含数据保护技巧)

发那科机器人开机必看&#xff1a;示教器不亮时的3种紧急处理方案&#xff08;含数据保护技巧&#xff09; 当生产线上的发那科机器人示教器突然无法点亮时&#xff0c;设备管理员往往面临巨大压力。这种故障不仅会中断生产流程&#xff0c;还可能因不当操作导致关键数据丢失。…...

基于三菱PLC的自动配料控制系统的设计

基于PLC的自动配料控制系统设计【配套10000字设计lumwen&#xff0c;三菱PLC组态王组态等】 基于三菱PLC的自动配料控制系统的设计 混凝土搅拌站分为&#xff1a;砂石给料、水和一些特殊的加剂给料、传输搅拌与存储 搅拌机控制系统上电后&#xff0c;进入人机对话的操作界面&am…...

OFA图像描述效果展示:COCO风格caption生成——简洁、准确、自然

OFA图像描述效果展示&#xff1a;COCO风格caption生成——简洁、准确、自然 1. 项目概述 今天要给大家展示一个特别实用的AI工具——基于OFA模型的图像描述生成系统。这个工具能够自动为任何图片生成简洁、准确、自然的英文描述&#xff0c;就像给图片配上了专业的文字说明。…...