学无先后,达者为师

网站首页 编程语言 正文

Linux下恢复应用程序被删除的文件(lsof)

作者:记录Python学习 更新时间: 2022-10-11 编程语言

一、介绍
        lsof(list open files),是一个列出当前操作系统"打开文件"的工具。在Linux环境下,任何事物都以"文件"的形式存在,通过文件不仅可以访问常规数据,还可访问网络连接和硬件。如TCP/UDP协议文件数据,系统后台都为该应用程序分配了一个"文件描述符",无论该"文件"的本质如何,该"文件描述符"为应用程序与操作系统之间的交互提供了通用接口,因为该应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个"文件描述符"列表对系统监测以及排错将是非常有帮助。

二、lsof使用
        lsof命令在shell终端即可显示系统打开的文件,因为lsof需要访问核心内存和各种文件,所以必须以root用户的身份运行它(lsof)。
COMMAND      PID    TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd        1                  root  cwd       DIR              253,0       247         64 /
systemd        1                  root  rtd       DIR              253,0       247         64 /
systemd        1                  root  txt       REG              253,0   1632744  201424295 /usr/lib/systemd/systemd
systemd        1                  root  mem       REG              253,0     20064       1606 /usr/lib64/libuuid.so.1.3.0
systemd        1                  root  mem       REG              253,0    265600     466869 /usr/lib64/libblkid.so.1.1.0
systemd        1                  root  mem       REG              253,0     90248      33899 /usr/lib64/libz.so.1.2.7
systemd        1                  root  mem       REG              253,0    157424      57454 /usr/lib64/liblzma.so.5.2.2
systemd        1                  root  mem       REG              253,0     23968      57489 /usr/lib64/libcap-ng.so.0.0.0
systemd        1                  root  mem       REG              253,0     19896      57311 /usr/lib64/libattr.so.1.1.0
systemd        1                  root  mem       REG              253,0     19288      43378 /usr/lib64/libdl-2.17.so
systemd        1                  root  mem       REG              253,0    402384      57327 /usr/lib64/libpcre.so.1.2.0
systemd        1                  root  mem       REG              253,0   2156160      43372 /usr/lib64/libc-2.17.so
systemd        1                  root  mem       REG              253,0    142232      43398 /usr/lib64/libpthread-2.17.so
systemd        1                  root  mem       REG              253,0     88720    2746121 /usr/lib64/libgcc_s-4.8.5-20150702.so.1

三、lsof输出内容解释
COMMAND: 进程的名称
PID: 进程标识符
USER: 进程所有者
FD: 文件描述符,应用程序通过文件描述符识别该文件,如cwd,txt等
TYPE: 文件类型,如DIR(目录)、REG(文件)、CHR(字符)、BLK(块设备)等
DEVICE: 指定磁盘的名称
SIZE: 文件的大小
NODE: 索引节点(文件在磁盘上的标识)
NAME: 打开文件的确切名称

四、lsof使用案例

4.1 查找谁在使用文件系统
lsof  test.txt 

4.2 恢复删除的文件,比如恢复/var/log/messages 
lsof  |grep  /var/log/messages |grep  deleted 
syslogd   1283      root    2w      REG        3,3  5381017    1773647 /var/log/messages (deleted)

cat /proc/1283/fd/2 > /var/log/messages 

对于许多的应用程序,尤其是日志和数据库文件,通过lsof程序命令恢复删除文件的方法非常有用!

原文链接:https://blog.csdn.net/u014674448/article/details/127249887

栏目分类
最近更新