Linux系列讲解 —— 【debugfs】交互式文件系统调试器

手册上说debugfs可以用于检查和更改ext2、ext3或ext4文件系统的状态。似乎很牛的样子,但是我并没有试验出来它多么强大的功能,无非就是在某些文件损坏导致无法删除的时候,我用debugfs来删除这些文件而已,如果有人知道它其他的妙用,可以留言,感谢。

1. 打开debugfs

首先使用debugfs访问损坏文件所在的分区(例如/dev/nvme1n1p1),-w选项代表debugfs可对分区进行读写操作。

sun@sun-pc:~$ sudo debugfs -w /dev/nvme1n1p1
[sudo] sun 的密码: 
debugfs 1.44.1 (24-Mar-2018)
debugfs:

2. 查看当前路径

刚打开debugfs的时候,当前路径为该分区(/dev/nvme1n1p1)的根目录下。

debugfs:  pwd
[pwd]   INODE:      2  PATH: /
[root]  INODE:      2  PATH: /
debugfs: 

3. 查看路径下有哪些文件

支持 ls,ls -l 查看某个路径下的文件,用法和 linux shell 终端下一样,但是显示是在一个新的界面中,按"q"可以退出显示。

debugfs:  ls AOSP_A10/frameworks

4. 切换路径

由于现在是处于debugfs子系统中,也就是此时的终端里包含了两个文件系统。一个是原生文件系统(即登录debugfs之前的文件系统),另一个是登录debugfs子系统后的文件系统,所以涉及两个路径。
比如说我在/home/sun/路径下执行了sudo debugfs -w /dev/nvme1n1p1来登录debugfs子系统,那么登录后对应的原生文件系统路径则为/home/sun/,而debugfs当前对应的文件系统的当前路径则为根目录(注意这个根目录是指debugfs操作分区的根目录)。

4.1 切换debugfs子系统路径

也是 cd 命令,和 linux 中不同的是,没有home目录的概念,不要单独使用 cd 或 cd ~

debugfs:  cd AOSP_A10/frameworks

4.2 切换native文件系统的路径

注:虽然在debugfs里可以切换native filesystem的路径,但是在退出debugfs后,当前路径还是登录debugfs之前的路径。

debugfs:  lcd /home/sun/temp

切换完后,可以键入任意字符 + 空格 + 两次tab键来查看native filesystem的路径是否变更。如下所示,可以看得出来刚登录debugfs后,对应的原生文件系统路径为/home/sun,在经过lcd命令切换路径后,变为了/home/sun/temp3
在这里插入图片描述

5. 删除文件

也是 rm 命令,但是不支持参数指定(如 rm -rf )

debugfs:  rm 1.txt

6. 复制 linux 系统中某文件的内容到 debugfs 加载分区中的某文件中

用法:write <native file> <new file>
<native file>:linux系统中的文件
<new file>:指的是在debugfs操作分区中未存在的文件

debugfs:  write ../temp/1.txt 3.txt

7. 文件block,inode,name相互转换

# name -> block
debugfs:  blocks 1.txt
9270 

# block -> inode number
debugfs:  icheck 9270
Block	Inode number
9270	324

# inode number -> name
debugfs:  ncheck 324
Inode	Pathname
324	//1.txt

8. 退出debugfs

Ctrl+D,或者在debugfs命令行中输入quit / q 后回车也可退出。

debugfs:  quit
或
debugfs:  q

注:debugfs内的所有写操作(如 write 和 rm )只有在debugfs退出时,才会在linux终端中看到变化。

猜你喜欢

转载自blog.csdn.net/In_engineer/article/details/132346286