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.87
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?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 Links
  names  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命令时,应确保已经对电脑进行了必要的安全保护,以避免受到黑客攻击或数据泄露。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/165522.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络(CNN)天气识别

文章目录 前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;我的环境&#xff1a; 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…

汽车虚拟仿真视频数据理解--CLIP模型原理

CLIP模型原理 CLIP的全称是Contrastive Language-Image Pre-Training&#xff0c;中文是对比语言-图像预训练&#xff0c;是一个预训练模型&#xff0c;简称为CLIP。该模型是 OpenAI 在 2021 年发布的&#xff0c;最初用于匹配图像和文本的预训练神经网络模型&#xff0c;这个任…

大数据安全 测试

测试1、用户 hive/1.common2.hadoop.fql.comLEXIN.COM 和 nn/1.common2.hadoop.fql.com 分别对 Hive 进行查询 &#xff08;1&#xff09;HDFS 配置 vim /usr/local/fqlhadoop/hadoop/conf/core-site.xml <property><name>hadoop.proxyuser.hive.hosts</name&g…

【机器学习13】生成对抗网络

1 GANs的基本思想和训练过程 生成器用于合成“假”样本&#xff0c; 判别器用于判断输入的样本是真实的还是合成的。 生成器从先验分布中采得随机信号&#xff0c;经过神经网络的变换&#xff0c; 得到模拟样本&#xff1b; 判别器既接收来自生成器的模拟样本&#xff0c; 也接…

算法之路(二)

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : 算法小能手 &#x1f606;今日分享 : 你知道北极熊的皮肤是什么颜色的吗&#xff1f;&#xff08;文章结尾有答案哦&#xff01;&#xff09; 文章目录 力扣的209题✔解题思路✔代码:✔总结: 力扣的3题✔解题思路&#xff1a…

Linux线程编程

Linux线程编程初步 一些历史背景 Linux间接起源于Unix&#xff0c;而Linux诞生时并不存在 "线程"的概念。在20世纪90年代线程才流行起来&#xff0c;POSIX Thread标准于 1995年确立。Unix中引入 Thread 之后&#xff0c;大量函数被重写&#xff0c;信号机制也变得复…

AI实践与学习1_Milvus向量数据库实践与原理分析

前言 随着NLP预训练模型&#xff08;大模型&#xff09;以及多模态研究领域的发展&#xff0c;向量数据库被使用的越来越多。 在XOP亿级题库业务背景下&#xff0c;对于试题召回搜索单单靠着ES集群已经出现性能瓶颈&#xff0c;因此需要预研其他技术方案提高试题搜索召回率。…

AVL树和红黑树

AVL树和红黑树 一、AVL树1. 概念2. 原理AVL树节点的定义插入不违反AVL树性质违反AVL树性质左单旋右单旋左右双旋右左双旋总结 删除 3. 验证代码4. AVL树完整实现代码 二、红黑树1. 概念2. 性质3. 原理红黑树节点的定义默认约定插入情况一 &#xff08;u存在且为红&#xff09;情…

MySQL InnoDB 引擎底层解析(一)

6. InnoDB 引擎底层解析 MySQL 对于我们来说还是一个黑盒&#xff0c;我们只负责使用客户端发送请求并等待服务器返回结果&#xff0c;表中的数据到底存到了哪里&#xff1f;以什么格式存放的&#xff1f;MySQL 是以什么方式来访问的这些数据&#xff1f;这些问题我们统统不知…

创新案例|云服务平台HashiCorp是如何构建开源社区实现B2B增长飞轮

社区文化是HashiCorp企业文化的重要组成部分。虽然众多公司声称自己是社区驱动&#xff0c;但实际付诸行动的很少。与众不同的是&#xff0c;HashiCorp从一开始就将社区视为战略方针的核心&#xff0c;这也影响和塑造了公司今天的发展方向。社区不仅是执行策略之一&#xff0c;…

约数个数定理

首先在讲这个定理前&#xff0c;首先科普一下前置知识 约数&#xff1a; 何为约数&#xff0c;只要能整除n的整数就是n的约数&#xff0c;举个例子&#xff0c;3的约束是1和3因为1和3能整除3 质数&#xff1a; 除了这个数字本身和1以外没有其他因子的数字就叫质数&#xff…

pythorch的numel()函数计算模型大小与现存占用

本文解释简单给一个模型列子记录如何计算该模型参数量与模型显存占用情况&#xff0c;该文直接调用torchvision库的模型文件构建模型model&#xff0c;在使用parameters()函数遍历&#xff0c;并在遍历情况下使用numel()函数记录模型参数量与显存占用。 代码如下&#xff1a; …

日志维护库:loguru

在复杂的项目中&#xff0c;了解程序的运行状态变得至关重要。在这个过程中&#xff0c;日志记录&#xff08;logging&#xff09;成为我们追踪、调试和了解代码执行的不可或缺的工具。在python语言中常用logging日志库&#xff0c;但是logging日志库使用相对繁琐&#xff0c;在…

Linux远程工具专家推荐(二)

8. Apache Guacamole Apache Guacamole 是一款免费开源的无客户端远程桌面网关&#xff0c;支持 VNC、RDP 和 SSH 等标准协议。无需插件或客户端软件&#xff1b;只需使用 HTML5 Web 应用程序&#xff08;例如 Web 浏览器&#xff09;即可。 这意味着您的计算机的使用不受任何一…

ElasticSearch学习篇6_ES实践与Lucene对比及原理分析技术分享小记

前言 QBM、MFS的试题检索、试题查重、公式转换映射等业务场景以及XOP题库广泛使用搜索中间件&#xff0c;业务场景有着数据量大、对内容搜索性能要求高等特点&#xff0c;其中XOP题库数据量更是接近1亿&#xff0c;对检索性能以及召回率要求高。目前QBM、MFS使用的搜索中间件是…

LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄

接着前两节的Langchain&#xff0c;继续实现Langchain中的Agent LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字 代码实现 # 从langchain库中导入模块 from langchain.llms import OpenAI # 从langchain.l…

软件测试: 测试用例

一. 软件测试四要素 测试环境,操作步骤,测试数据,预期结果 二. 基于需求进行测试用例的设计 基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就要分析测试需求,验证需求是否正确,完整,无二义性,并且逻辑自洽.在需求正确的基础上细化测试需求,从测试需求提炼出一…

最全的接口自动化测试思路和实战:【推荐】混合测试自动化框架(关键字+数据驱动)

混合测试自动化框架(关键字数据驱动) 关键字驱动或表驱动的测试框架 这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具&#xff0c;并可以用来“驱动&#xff02;待测应用程序和数据的测试脚本代码&#xff0c;关键字驱动测试看上去与手工测…

三天吃透Redis面试八股文

目录&#xff1a; Redis是什么&#xff1f;Redis优缺点&#xff1f;Redis为什么这么快&#xff1f;讲讲Redis的线程模型&#xff1f;Redis应用场景有哪些&#xff1f;Memcached和Redis的区别&#xff1f;为什么要用 Redis 而不用 map/guava 做缓存?Redis 数据类型有哪些&…

DrugMAP: molecular atlas and pharma-information of all drugs学习

DrugMAP&#xff1a;所有药物的分子图谱和制药信息 - PMC (nih.gov) DrugMAP: the molecular atlas and pharma-information of drugs (idrblab.net) 构建了一个描述药物分子图谱和药物信息的新数据库&#xff08;DrugMAP&#xff09;。它提供了>30 000种药物/候选药物的相…