博客
关于我
Linux 利用lsof命令恢复删除的文件
阅读量:791 次
发布时间:2023-02-01

本文共 1641 字,大约阅读时间需要 5 分钟。

lsof 命令全解析:文件和网络资源监控的利器

lsof 命令(List Open Files,列出打开的文件)是 Unix/Linux 系统中一个强大的系统监控工具。它能够帮助管理员快速查看系统中各进程打开的文件、网络连接以及相关信息。本文将从多个维度详细解析 lsof 命令的使用方法和实战技巧。


一、lsof 命令的作用

在 Unix/Linux 系统中,任何资源(文件、设备、网络连接等)都会通过文件描述符(File Descriptor)被应用程序访问。文件描述符为进程与操作系统之间提供通用接口。通过 lsof 命令,管理员可以:

  • 查看文件占用情况:识别系统中被占用的文件。
  • 追踪网络连接:分析已连接的 TCP/UDP 端口信息。
  • 恢复deleted 文件:在文件被删除或 cleaner 脚本运行后,试图找回重要文件。
  • lsof 具有强大的过滤功能,能够根据进程 UID、GID、文件名等条件筛选输出,极大简化了工作量。


    二、lsof 命令的语法和选项参数

    lsof [选项] [参数]

    其中,常用选项和参数如下:

    • -a:显示所有打开文件的进程列表(默认行为)。
    • -c:指定要查询的进程名称。
    • -g:按进程 GID 键入。
    • -d:根据文件描述符 ID or 文件 inode 查找进程。
    • -D:按目录名查找所在目录下所有文件。
    • -n:显示 NFS 共享文件。
    • -i:按端口、IP 或其他条件筛选进程。
    • -p:指定进程号查找文件。
    • -u:按 UID 查找进程。
    • -h:显示帮助信息。
    • -v:显示 lsof 版本。
    • +d:递归查找指定目录下所有被打开的文件。

    三、实际案例:lsof 的使用场景

  • 查看网络端口信息

    • 命令lsof -i :22
    • 解释:查看系统中使用 TCP 端口 22 的进程。通常 22 端口用于 SSH 服务器,可查看连接到服务器的客户端进程。
  • 批量处理与筛选输出

    lsof -d | grep cwd
    • 解释:显示所有文件描述符的进程列表,并筛选出以 cwd 开头的进程(默认文件系统根目录)。

  • 四、恢复删除的文件:以 /var/log/messages 为例

  • 备份文件

    cp /var/log/messages /var/log/messages_bac
  • 启动 lsof 查看进程

    lsof | grep /var/log/messages
    • 解释:显示当前正在使用 /var/log/messages 的进程信息。
  • 删除文件

    rm /var/log/messages
  • 观察状态变化

    lsof | grep /var/log/messages
    • 输出:发现添了 (deleted),表示文件被删除了,但进程仍在占用该文件描述符。
  • 找到文件描述符

    cd /proc/PID/fd/1
    • 解释:进入指定进程的文件描述符目录,查看具体文件信息。
  • 恢复文件

    cat /proc/PID/fd/1 > /var/log/messages
    • 注意:在恢复文件前,确保目标进程仍在运行,且文件描述符指向原文件位置。

  • 五、lsof 遗传的特性与限制

  • 依赖文件系统结构:lsof 只能查看已存在的文件描述符。
  • 不支持子进程:显示的进程信息不包含线程(positions),仅能看到主进程。
  • 文件可能已被删除:lsof 会报告 deleted 文件,但无法恢复文件。

  • 六、总结与建议

    lsof 是每一个 Linux 系统管理员的必备工具,能够显示系统内文件和网络资源的状态。掌握 lsof 的使用方法,能够显著提升故障排查的效率。但需要注意,lsof 操作可能导致文件被锁定或删除,建议在恢复文件前谨慎处理。

    通过结合 pstopStrings 等工具,可以更全面地监控系统状态,例如:

    lsof | grep deletedps aux | grepJoinedtop -n 10

    希望这篇文章能帮助您更好地掌握 lsof 命令的使用方法,期待您的反馈与评论!

    转载地址:http://cxwfk.baihongyu.com/

    你可能感兴趣的文章
    Linux 的性能调优的思路
    查看>>
    Linux 的文本搜索命令 grep
    查看>>
    Linux 的账号与群组管理
    查看>>
    linux 目录&基础命令
    查看>>
    Linux 目录简介
    查看>>
    Linux 目录结构
    查看>>
    Linux 硬链接和软链接到底是什么?怎么理解?
    查看>>
    Linux 磁盘分区详解
    查看>>
    Linux 磁盘划分(3分钟看懂)
    查看>>
    Linux 磁盘和文件系统管理1
    查看>>
    Linux 磁盘和文件系统管理2
    查看>>
    Linux 磁盘满了不用慌,这几个命令在手不断梭哈就好
    查看>>
    Linux 磁盘爆满【解决办法】
    查看>>
    Linux 磁盘管理
    查看>>
    Linux 磁盘管理及监控与性能评估
    查看>>
    Linux 示例中的 apt 命令大全
    查看>>
    linux 禁用磁盘密码,linux 磁盘加密保护
    查看>>
    Linux 系统备份与恢复详解
    查看>>
    Linux 系统安装 Mongodb 数据库
    查看>>
    Linux 系统安装MySQL
    查看>>