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 查看…...

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

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

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

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

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

蓝桥杯每日一题2023.11.19
题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 首先想到的方法为dfs去寻找每一个数,但发现会有超时 #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标签:仅仅是UI层面的加粗样式,并不具备HTML语义 strong标签:不仅是在UI层面的加粗样式,具备HTML语义,表示强调 2. i标签和em标签 i 标签:仅仅是UI层面的斜体样式,并不具备…...
c++中的特殊类设计
文章目录 1.请设计一个类,不能被拷贝2. 请设计一个类,只能在堆上创建对象3. 请设计一个类,只能在栈上创建对象4. 请设计一个类,不能被继承5. 请设计一个类,只能创建一个对象(单例模式) 1.请设计一个类,不能…...

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

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

Java读写Jar
Java提供了读写jar的类库Java.util.jar,Java获取解析jar包的工具类如下: 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是旋转角度。 上面就是一个四元数表示旋转。 如何使用 空间中向量(1,2,3)扩展为(0,1,2,3&#…...
ClickHouse SQL 查询优化
1 单表查询 1.1 Prewhere替代where Prewhere和where语句的作用相同,用来过滤数据。不同之处在于prewhere只支持 *MergeTree 族系列引擎的表,首先会读取指定的列数据,来判断数据过滤,等待数据过滤之后再读取select 声明的列字段来补…...

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

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

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

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

scss的高级用法——循环
周末愉快呀!一起来学一点简单但非常有用的css小知识。 最近在一个项目中看到以下css class写法: 了解过tailwind css或者unocss的都知道,从命名就可以看出有以下样式: font-size: 30pxmargin-left: 5px;margin-top: 10px; 于是…...
Linux安装Chrome浏览器 -linux安装choeme
Linux 操作系统一般自带的浏览器是 FireFox,不过有些用户可能更喜欢 Google 出品的 Chrome 浏览器。本教程将介绍如何在 Linux 系统上安装 Chrome 浏览器,以及可能会遇到的一些问题解决方案。 下载 Chrome 安装包 需要下载 Chrome 的安装包。可以在 Go…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...