linux 中lsof 命令详解

目录

  • 简介
  • 输出信息含义
      • 输出示例
  • 常用参数
    • 示例命令
  • 使用实例
    • 查找文件系统使用情况
    • 安全审计
    • 与其他工具结合使用
    • 性能考虑
  • 实用命令
  • 总结


简介

lsof(List Open Files)是一个用于列出当前系统打开文件的强大工具。在 Linux 环境下,几乎所有事物都以文件的形式存在,包括常规数据、网络连接和硬件设备。因此,系统在后台为每个应用程序分配了一个文件描述符(file descriptor),该文件描述符为应用程序与基础操作系统之间的交互提供了统一的接口。通过 lsof 工具,用户可以查看进程打开的文件列表,这对于系统监测和故障排除非常有帮助。

输出信息含义

在终端中输入 lsof 命令即可显示系统当前打开的文件。由于 lsof 需要访问内核内存和各种文件,通常需要以 root 用户身份运行,以充分发挥其功能。

输出示例

[root@sonar ~]# lsof | head
COMMAND     PID   TID    USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1          root  cwd       DIR                8,5       4096         96 /
systemd       1          root  rtd       DIR                8,5       4096         96 /
systemd       1          root  txt       REG                8,5    1628608     353582 /usr/lib/systemd/systemd
systemd       1          root  mem       REG                8,5      20064     299940 /usr/lib64/libuuid.so.1.3.0
systemd       1          root  mem       REG                8,5     265576     266500 /usr/lib64/libblkid.so.1.1.0
systemd       1          root  mem       REG                8,5      90160     299938 /usr/lib64/libz.so.1.2.7
systemd       1          root  mem       REG                8,5     157440     993141 /usr/lib64/liblzma.so.5.2.2
systemd       1          root  mem       REG                8,5      23968       1566 /usr/lib64/libcap-ng.so.0.0.0
systemd       1          root  mem       REG                8,5      19896       1554 /usr/lib64/libattr.so.1.1.0
[root@sonar ~]#

每行代表一个打开的文件,默认情况下,lsof 会显示所有进程打开的所有文件。输出各列的含义如下:

  • COMMAND:进程的名称
  • PID:进程标识符
  • USER:进程所有者
  • FD:文件描述符,应用程序通过此标识符访问文件(如 cwd、txt 等)
  • TYPE:文件类型(如 DIR、REG 等)
  • DEVICE:指定设备名称
  • SIZE:文件大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称

文件描述符解释

  • cwd:当前工作目录
  • txt:程序代码(如可执行文件或共享库)
  • urw:分别表示读、写模式,而大写的 W 表示写锁。文件描述符一般从 0 到 2 开始,分别表示标准输入、输出和错误流。

常用参数

lsof 的基本语法为:

lsof [options] filename

示例命令

  • 查找特定文件的使用情况

    lsof abc.txt  # 显示正在使用 abc.txt 的进程
    
  • 查看特定进程的打开文件

    lsof -c abc  # 显示 abc 进程当前打开的文件
    lsof -p 1234  # 列出进程号为 1234 的进程打开的文件
    
  • 查找某个目录下的打开文件

    lsof +d /usr/local/  # 显示 /usr/local/ 目录下被进程打开的文件
    
  • 网络相关命令

    lsof -i  # 显示所有打开的网络连接
    lsof -i :80  # 显示打开 80 端口的进程
    

使用实例

查找文件系统使用情况

在卸载文件系统时,如果该文件系统中有打开的文件,操作通常会失败。通过 lsof 可以找出正在使用该文件系统的进程。

# lsof /GTES11/
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 4208 root cwd DIR 3,1 4096 2 /GTES11/
vim 4230 root cwd DIR 3,1 4096 2 /GTES11/

安全审计

lsof 在安全审计中也发挥着重要作用。通过列出打开的文件和对应的进程,您可以识别潜在的安全风险。例如,您可以使用 lsof 检查哪些用户正在访问敏感文件,或者检测可疑的进程是否在访问关键系统文件:

lsof /etc/shadow  # 检查哪个进程在访问系统密码文件

这种方式对于确保系统安全性至关重要,尤其是在处理敏感数据时。

与其他工具结合使用

lsof 可以与其他命令和工具结合使用,以增强监控和故障排除能力。例如,将 lsoftop 结合,您可以获取实时的系统性能数据:

top -c | grep `lsof -p <PID> | awk '{print $9}'`

这样可以更直观地了解进程的资源占用情况。

性能考虑

在高负载环境下,使用 lsof 可能会对系统性能产生影响,因为它需要访问内核内存并扫描文件描述符。因此,建议在非高峰时段使用 lsof,或者使用其输出重定向到文件的方式,减少对终端的影响:

lsof > /tmp/lsof_output.txt

实用命令

lsof `which httpd`  # 查找使用 Apache 可执行文件的进程
lsof /etc/passwd  # 查找占用 /etc/passwd 的进程
lsof -c sendmail  # 查看 sendmail 进程的文件使用情况
lsof -u^tony  # 查看不是用户 tony 的进程的文件使用情况

总结

lsof 是 Linux 系统中不可或缺的工具,能够高效地列出当前系统中所有打开的文件及其对应的进程信息。通过利用 lsof,用户不仅可以监控系统资源的使用情况,还能诊断和解决各种问题,例如确认进程是否占用了特定文件、查看网络连接的状态以及恢复已删除的文件等。结合实际应用案例、故障排除技巧和与其他工具的配合,lsof 的使用将为系统管理员提供强大的支持,使其能够有效管理和维护复杂的 Linux 环境。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue+uniapp的C语言在线评测系统的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

NewStarCTF2024-Week2-Web-WP

目录 1、复读机 2、你能在一秒内打出八句英文吗 3、遗失的拉链 4、谢谢皮蛋 plus 5、PangBai 过家家&#xff08;2&#xff09; 1、复读机 测了下存在 ssti 没什么说的 fenjing 秒了 2、你能在一秒内打出八句英文吗 每次出来的需要提交的内容都不一样 exp&#xff1a; …

【漏洞复现】畅捷通T+ FileUploadHandler.ashx 任意文件上传漏洞

免责声明: 本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严重后果…

如何从头训练大语言模型: A simple technical report

写在前面 自8月底训好自己的1.5B的LLM后&#xff0c;一直都没有发布一个完整的技术报告&#xff0c;不少小伙伴私信我催更&#xff0c;千呼万唤始出来。其实也没有太大动力去做&#xff0c;原因有三&#xff1a; 豁然开朗&#xff1a;搞定全流程之后&#xff0c;对LLM确实豁然…

静止的秘密

在未来的某一天&#xff0c;科技已经发展到了令人难以置信的地步。在这个时代&#xff0c;视频不再是简单的记录工具&#xff0c;而是成为了连接现实与虚拟世界的桥梁。在这个背景下&#xff0c;一位名叫陈欣的年轻女程序员&#xff0c;发明了一种名为“时间镜像”的技术&#…

智能去毛刺:2D视觉引导机器人如何重塑制造业未来

机器人技术已经深入到各个工业领域中&#xff0c;为制造业带来了前所未有的变革。其中&#xff0c;2D视觉引导机器人技术以其精准、高效的特点&#xff0c;在去毛刺工艺中发挥着越来越重要的作用。本文将为您介绍2D视觉引导机器人技术的基本原理及其在去毛刺工艺中的应用&#…

第2节 如何学习鸿蒙技术

以下是学习鸿蒙技术的一些途径&#xff1a; 一、官方文档与资源 1. 华为开发者官网 • 这是最权威的学习资源平台。官网提供了详细的鸿蒙操作系统的文档&#xff0c;包括架构介绍、开发指南、API参考等内容。例如&#xff0c;对于初学者来说&#xff0c;可以从入门教程开始&am…

Cortex-A7:一级页表(First level address translation)描述符格式及虚拟地址(VA)到物理地址(PA)转换过程

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf1 Cortex-A7&#xff1a;一级页表&#xff08;First level address translation&#xff09;描述符格式及虚拟地址&#xff08;VA&#xff09;到物理地址&#xff08;PA&#xff09;转换过程 1.1 一级页表&#xff08;First l…

白银票据、黄金票据和委派攻击(内网渗透)

今日你心思不在&#xff0c;心思不在则气息不在&#xff0c;气息不在则步伐不在&#xff0c;步伐不在&#xff0c;命安在。 文章目录 kerberos协议主要角色协议工作流程 白银票据白银票据伪造条件 黄金票据黄金票据伪造条件 白银票据和黄金票据哪个危害更大委派攻击非约束性委…

界面耻辱纪念堂--可视元素04

当我们第一次注意到 Visual Basic 5.0 菜单的动画效果“特性”时&#xff0c;我们只能嘲笑这种特性的傻气。事实上&#xff0c;我们并不觉得特性本身傻气&#xff0c;而是微软为这个特性投资&#xff0c;然后将这个特性应用到他们所有的主流产品&#xff08;例如&#xff0c;Of…

06 算法基础:算法的定义、表现形式(自然语言、伪代码、流程图)、五个特性(有穷性、确定性、可行性、输入、输出)、好算法的设计目标

目录 1 算法的定义 2 算法的三种表现形式 2.1 自然语言 2.2 伪代码 2.3 流程图 3 算法的五个特性 3.1 有穷性 3.2 确定性 3.3 可行性 3.4 输入 3.5 输出 4 好算法的设计目标 4.1 正确性 4.2 可读性 4.3 健壮性 4.4 通用性 4.5 高效率与低存储量 1 算法的定义 …

力姆泰克DMB系列伺服电动缸

力姆泰克DMB系列伺服电动缸 高精度运动&#xff0c;运动平稳&#xff0c;低噪音&#xff0c;高速度 向下翻动查看更多 力姆泰克DMB系列伺服电动缸采用瑞士先进的伺服缸结构设计和进口散件国内组装&#xff0c; 保证力姆泰克伺服电动缸在国内的领先地位. 轧制滚珠丝杠保证伺服…

Google Ads API v18 发布,开发者迎来全新功能与优化

Google 发布了 Google Ads API 第 18 版&#xff0c;为开发者引入了多项新功能和改进。 Google 发布的 Google Ads API 第 18 版引入了增强的工具和功能&#xff0c;使广告主在广告活动优化和性能跟踪方面拥有更多控制权。 主要更新包括&#xff1a; 预算优化建议&#xff1a;新…

解决UNSPSC商品分类的层级不足的方法

《联合国标准产品和服务守则》&#xff08;UNSPSC&#xff09;是一个分层框架&#xff0c;旨在对产品和服务进行分类。其主要目标是通过提供统一的方法来对产品和服务进行分类&#xff0c;从而简化采购和供应链管理。 虽然 UNSPSC 有效地将产品分为各种商品类别&#xff0c;但…

06-ArcGIS For JavaScript-requestAnimationFrame动画渲染

文章目录 概述setInterval&#xff08;&#xff09;与setTimeout()requestAnimationFrame()requestAnimationFrame在ArcGIS For JavaScript的应用结果 概述 本节主要讲解与时间相关的三个方法setTimeout()、setInterval()和requestAnimationFrame()&#xff0c;这三个方法都属…

弹性力学试题解答答案

一、名词解释 圣维南原理&#xff1a;分布于弹性体上一小块面积&#xff08;或体积&#xff09;内的荷载所引起的物体中的应力&#xff0c;在离荷载作用区稍远的地方&#xff0c;基本上只同荷载的合力和合力矩有关&#xff1b;荷载的具体分布只影响荷载作用区附近的应力分布。…

基于springboot学生成绩管理系统

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…

CPO:隐含于CoT与ToT两者间的推理平衡

自OpenAI推出o1以来&#xff0c;随着reasoning scaling law的大行其道‌&#xff0c;很多研究者都将目光聚焦在“reasoning”之上&#xff0c;而在仅reasoning维度上&#xff0c;确实存在着非常深邃且让人着迷的可探索空间&#xff0c;毕竟这意味着围绕system2展开的下一轮认知…

利用Excel数据合并到Word功能,官方名为“Word邮件合并”

### 利用Excel数据合并到Word功能&#xff0c;官方名为“Word邮件合并”简介 #### 引言 在日常办公场景中&#xff0c;我们经常需要将Excel中的数据批量插入到Word文档中&#xff0c;比如制作员工工资条、邀请函或是客户信息表等。传统的手工操作不仅耗时耗力&#xff0c;还容易…

Javascript 构造http请求

构造HTTP请求有多种方式&#xff0c;此种为使用javascript 构造http请求的方法 构造HTTP请求_vscode post 请求-CSDN博客 web/static/js/user/login.js ; var user_login_ops {init:function(){this.eventBind();},eventBind:function(){$(".login_wrap .do-login"…