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

Linux(Centos 7.6)命令详解:lsof

1.命令作用

列出打开的文件(list open files);列出系统中所有活动进程打开的文件

2.命令语法

Usage: lsof [options]

3.参数详解

OPTION:

  • -a,多个参数按照且进行匹配计算,默认是或;如 lsof -u root -c postmaster -a
  • -c cmd,列出指定进程名称所打开的文件
  • +d dir,列出目录下被打开的文件
  • +D dir,递归列出目录下被打开的文件
  • -d,从输出列表中排除或包含的文件描述符
  • -i,列出符合条件的进程
  • -p,列出进程号所打开的文件息
  • -u,列出uid号进程详情

4.常用用例

4.1.列出指定文件关联的进程

[root@host49 test2]# nmon -f -s 10 -c 30 # 运行一个后台运行的命令,其他命令也可以 [root@host49 test2]# [root@host49 test2]# lsof host49_231018_1804.nmon # 查看nmon生成文件涉及的进程 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nmon 151896 root 11w REG 8,3 177460 66980903 host49_231018_1804.nmon [root@host49 test2]# [root@host49 test2]# ps -ef | grep nmon root 151896 1 0 18:04 pts/10 00:00:00 nmon -f -s 10 -c 30 root 152015 150325 0 18:04 pts/10 00:00:00 grep --color=auto nmon [root@host49 test2]#

4.2.列出指定程序打开的文件

[root@host49 test2]# lsof -c nmon COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nmon 151896 root cwd DIR 8,3 4096 66994193 /root/llll/test2 nmon 151896 root rtd DIR 8,3 4096 2 / nmon 151896 root txt REG 8,3 158216 82859771 /usr/bin/nmon [root@host49 test2]#

4.3.列出指定端口号进程

[root@node4 ~]# lsof -i:5432 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postmaste 10554 postgres 6u IPv4 78366 0t0 TCP *:postgres (LISTEN) postmaste 10554 postgres 7u IPv6 78367 0t0 TCP *:postgres (LISTEN) [root@node4 ~]#

4.4.列出指定进程ID打开的文件

[root@node4 ~]# lsof -p 10554 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postmaste 10554 postgres cwd DIR 8,3 4096 50526377 /home/postgres/data postmaste 10554 postgres rtd DIR 8,3 4096 64 / postmaste 10554 postgres txt REG 8,3 8457168 2884220 /usr/pgsql-15/bin/postgres postmaste 10554 postgres DEL REG 0,4 78358 /dev/zero postmaste 10554 postgres mem REG 8,3 106075056 17065797 /usr/lib/locale/locale-archive ... ... ... ... postmaste 10554 postgres DEL REG 0,4 950283 /SYSV0302f8a9 postmaste 10554 postgres 0r CHR 1,3 0t0 1028 /dev/null postmaste 10554 postgres 1w FIFO 0,9 0t0 78362 pipe postmaste 10554 postgres 2w FIFO 0,9 0t0 78362 pipe postmaste 10554 postgres 3r FIFO 0,9 0t0 78361 pipe postmaste 10554 postgres 4w FIFO 0,9 0t0 78361 pipe postmaste 10554 postgres 5r FIFO 0,9 0t0 78362 pipe postmaste 10554 postgres 6u IPv4 78366 0t0 TCP *:postgres (LISTEN) postmaste 10554 postgres 7u IPv6 78367 0t0 TCP *:postgres (LISTEN) postmaste 10554 postgres 8u unix 0xffff8c76d8493400 0t0 78369 /var/run/postgresql/.s.PGSQL.5432 postmaste 10554 postgres 9u unix 0xffff8c76d8494800 0t0 78371 /tmp/.s.PGSQL.5432 [root@node4 ~]#

4.5.列出指定用户名称/UID的进程

[root@node4 ~]# lsof -u postgres | head COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postmaste 10554 postgres cwd DIR 8,3 4096 50526377 /home/postgres/data postmaste 10554 postgres rtd DIR 8,3 4096 64 / postmaste 10554 postgres txt REG 8,3 8457168 2884220 /usr/pgsql-15/bin/postgres postmaste 10554 postgres DEL REG 0,4 78358 /dev/zero postmaste 10554 postgres mem REG 8,3 106075056 17065797 /usr/lib/locale/locale-archive postmaste 10554 postgres mem REG 8,3 11448 195623 /usr/lib64/libfreebl3.so postmaste 10554 postgres mem REG 8,3 68192 229201 /usr/lib64/libbz2.so.1.0.6 postmaste 10554 postgres mem REG 8,3 100008 235183 /usr/lib64/libelf-0.172.so postmaste 10554 postgres mem REG 8,3 402384 214695 /usr/lib64/libpcre.so.1.2.0 [root@node4 ~]#

4.6.列出目录下打开的进程

lsof +d /root lsof +D /root
[root@node4 ~]# lsof +d /root | head COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME gnome-ses 7374 root cwd DIR 8,3 4096 33574977 /root dbus-laun 7383 root cwd DIR 8,3 4096 33574977 /root dbus-daem 7384 root cwd DIR 8,3 4096 33574977 /root gvfsd 7460 root cwd DIR 8,3 4096 33574977 /root gvfsd-fus 7465 root cwd DIR 8,3 4096 33574977 /root at-spi-bu 7582 root cwd DIR 8,3 4096 33574977 /root dbus-daem 7587 root cwd DIR 8,3 4096 33574977 /root at-spi2-r 7589 root cwd DIR 8,3 4096 33574977 /root gnome-she 7619 root cwd DIR 8,3 4096 33574977 /root [root@node4 ~]#

5.7.删除文件后,磁盘空间没有回收

注意: tail进程结束后,空间也会自动释放

1.会话1: 使用tail -f 命令,读取一个文件 df -h /data1 tail -f a.txt 2.会话2: 在另外一个窗口,删除a.txt文件;df 查看磁盘空间,发现空间没有变化 rm -rf a.txt df -h /data1 3.通过lsof |grep a.txt 查看有哪些进程在访问a.txt lsof | grep a.txt # 输出如下: tail 4043 root 3r REG 8,3 9 38288842 /data1/a.txt (deleted) ll /proc/4043/fd # 可以查看到删除的文件,所以空间并没有释放 # 输出如下:(3链接到一个文件,处于deleted状态,且显示是红色闪烁状态) lr-x------ 1 root root 64 Aug 10 19:56 3 -> '/data1/a.txt(deleted)' 4.执行echo 3 命令,彻底释放磁盘空间 df -f /data1 echo 3 >/proc/4043/fd/3 df -f /data1

4.8.恢复删除的文件

注意: 前提是删除的文件 file 通过 lsof 查看是deleted状态

1.会话1: 使用tail -f 命令,读取一个文件 tail -f a.txt 2.会话2: 在另外一个窗口,删除a.txt文件 md5sum a.txt rm -rf a.txt 3.通过lsof |grep a.txt 查看有哪些进程在访问a.txt lsof |grep a.txt # 输出信息:(最后是deleted状态,是可以恢复的) tail 4043 root 3r REG 8,3 9 38288842 /data1/a.txt (deleted) 4.执行执行cat命令,恢复被删除的文件,并用md5sum验证文件是否正确 cat /proc/4385/fd/3 > /data1/a.txt md5sum a.txt
http://www.jsqmd.com/news/606464/

相关文章:

  • WarcraftHelper终极优化方案:魔兽争霸III完整兼容性修复指南
  • 基于STM32F407与miniMP3库的流式音频解码系统设计与实现
  • Janus-Pro-7B电商场景实战:商品主图智能生成与营销文案创作
  • 内置权重真省心!通用物体识别-ResNet18镜像稳定部署避坑指南
  • Swift 析构过程
  • 小型的自动洗勺机结构设计【三维proe+cad图纸+毕业论文+仿真】
  • FLUX.1-dev-fp8-dit文生图+SDXL_Prompt风格案例:国风文创产品视觉设计全流程
  • Visual Studio Code远程开发:无缝调试云端Pixel Dimension Fissioner
  • AI显微镜-Swin2SR效果展示:AI理解图像内容实现无损4倍放大的作品集
  • 义乌幼小衔接班口碑如何?2026年推荐这些靠谱机构,优质的幼小衔接重德教育显著提升服务 - 品牌推荐师
  • QMCDecode终极指南:3步解锁QQ音乐加密格式,免费实现音乐跨平台播放
  • DeepSeek-R1-Distill-Qwen-1.5B模型体验:数学80+分的1.5B参数小钢炮
  • Z-Image Atelier 中国风水墨画与现代抽象艺术生成效果对比研究
  • Nginx何以征服高性能之巅?深入剖析其架构设计哲学
  • Dify低代码平台对接Phi-3-mini:快速构建企业级AI应用工作流
  • Windows任务栏透明化终极指南:5种视觉方案与智能场景切换
  • Krita AI Diffusion插件全链路技术指南:从故障排查到企业部署
  • 释放系统潜能:DriverStore Explorer驱动清理与优化指南
  • 终极LSTM时间序列预测实战指南:从零基础到专家级的快速入门
  • OBS-Multi-RTMP:多平台直播高效同步解决方案
  • FastAPI日志配置终极指南:如何高效设置和管理应用日志
  • MedGemma-X教学视频生成:自动将AI阅片过程转化为带语音讲解的教学素材
  • OurStreets项目动画架构解析:animation-samples中的地图动画最佳实践
  • Browsershot性能优化终极指南:10个提升截图速度的实用技巧
  • seo外贸优化如何进行跨境电商优化_seo外贸优化如何与品牌建设结合
  • 终极OctoSQL部署指南:从Docker容器化到Kubernetes集群的完整实践
  • Browsershot终极教程:从零开始掌握Chrome无头浏览器
  • 学习通、智慧职教刷课脚本
  • Qwen2.5-7B-Instruct新手入门:手把手教你配置参数,轻松应对长文本与代码生成
  • 用Grid+ 1.2为EFDC模型构建复杂流域网格:以亚马逊河案例实操演示