AIX命令参考大全,卷 2,d - h - fsdb 命令

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 2,d - h

fsdb 命令

用途

调试文件系统。

语法

fsdb filesystem [ - ]

描述

fsdb 命令允许您对FileSystem参数指定的文件系统进行检查、修改和调试。这个命令向文件系统对象提供访问,例如块、索引节点或者目录。您可以使用 fsdb 命令检查并且修复已经被破坏的文件系统。文件系统的关键组成部分可以象征性的引用。这个功能为修改控制块的条目和降序文件系统树简化过程。

为了检查一个文件系统,要通过一个块设备的名称、一个原始设备名称或者一个已经安装的文件系统名称来指定它。在最后一种情况下,fsdb 命令通过读 /etc/filesystems 文件来决定相关的文件系统名称。安装的文件系统不能被修改。

对于 JFS 文件系统和 JFS2 文件系统,fsdb 命令有不通的接口。下面解释如何将 fsdb 命令用于 JFS 文件系统。参考 JFS2 子命令可以得到关于JFS2 子命令的信息。

如果这个指定的文件系统是一个 JFS2 快照,那么 fsdb 命令启用检查和修改快照高级块、快照映射、块映射 x 树副本和节头。参考 JFS2 快照子命令可以得到有关 JFS2 快照子命令的信息。

fsdb 命令的子命令允许您访问、查看或者更改文件系统中的信息。在子命令中,您输入的任何数字被缺省默认为十进制,除非您在它的前面加前缀“0”表示八进制或者加“0x”表示十六进制。所有的地址都显示成十六进制。

因为 fsdb 命令在一个时间读写一个块,它使用 raw 工作就像使用 block I/O。

标志

- 禁用那些用于检验索引节点和块地址的错误检查例程。o 子命令切换这些例程的开关。当这些例程在运行的时候, fsdb 命令从高级块中读取关键的文件系统数据。获取的信息允许 fsdb 命令成功地访问不同的文件系统对象并且做出不同的错误检查。

子命令

fsdb 子命令是在文件系统中定位和显示,或者修改信息的请求。子命令主要的类别是:

Category 功能
位置 访问文件系统中的信息。
Display 查看文件系统中的信息。
修改 更改文件系统中的信息。

另外,有几个其它的子命令。

位置子命令

有两种类型的位置子命令:

Number[ I | M | i | b ]

OR 

dDirectorySlot

第一种包括一个数字,后面跟着一个地址说明(可选)。这个地址说明定义了前面的数字如何被解释。有四种地址说明对应四种不同的Number变量的解释:

I 索引节点映射块数字
M 磁盘映射块数字
i 索引节点号
b 片段数字

依靠地址规范(或者缺少它),这种类型的位置子命令访问信息如下所示:

Number Number变量指定的绝对字节偏移量处访问数据。
MapBlockNumberI 访问通过MapBlockNumber变量指定的索引节点映射块。
MapBlockNumberM 访问通过MapBlockNumber变量指定的磁盘映射块。
InodeNumberi 访问通过InodeNumber变量指定的索引节点。
FragmentNumberb 访问通过FragmentNumber变量指定的文件系统块。一个片段号包括一个块地址和一个编码长度。一个完整的段地址在长度上是一个 32 位数字。前面 28 位是起始段地址。段的长度在剩余的 4 位被编码;它作为一个少于一个满块的段数目被编码。例如,在一个包含有 1024 字节段的文件系统,地址 0x2000010f 指的是一个块,这个块在 1KB 块数字 0x10f 开始,并且有 2KB 长度。与之相对,在一个包含 512字节段的文件系统中,地址 0x2000010f 指的是一个块,这个块在 512 字节块 0x10f 开始,并且有 3072 字节的长度(512*6)。

第二种位置子命令是用来访问目录条目的。这个子命令包括一个字符d ,这个字符后面紧跟着一个目录口数字。对于每一个相关的索引节点块,目录数字都以 0 开始。

这种位置子命令访问信息如下所示:

dDirectorySlot 访问目录条目,这个条目为当前索引节点被 DirectorySlot 变量索引。使用这个子命令,只有分配的目录条目才能被操作。

显示子命令

为了查看与地址规范相关的信息,要使用一个显示子命令,这个子命令要包含在一个与一种显示格式相关联的显示设备当中。

p[Number]{ i | d | o | e | c | b | y | M | I | x | s | D }

OR

f[Number]{ i | d | o | e | c | b | y | M | I | x | s | D }

显示设备是:

(.,.)p 指定一个常规的设备。使用常规的显示子命令来显示与当前地址相对应的数据。如果您在符号 p 之后输个数字,fsdb 命令显示这个条目的数字。要做一个检查以检测块的边界溢出。如果您输入“0”或者“*”(星号),fsdb命令会显示到当前段末的所有条目。
f 指定一个文件设备。使用这个文件显示子命令来显示同当前索引节点关联的数据块。如果您在符号 f 后输入一个数字,fsdb 命令会显示这个文件的块。块的编号从 0 开始。显示的格式遵循块的数字。如果您输入 f 而不输入一个块号,那么 fsdb 命令会默认显示当前索引节点的块 0。

对于每个设备显示的格式是:

i 作为索引节点显示。
d 作为目录显示。
o 作为八进制的字来显示。
e 作为十进制的字来显示。
c 作为字符来显示。
b 作为八进制字节来显示。
y 作为十六进制字节来显示。
M 作为磁盘映射条目来显示。
I 作为索引节点映射条目来显示。
x 作为十六进制字来显示。
S 作为单间接块来显示。
D 作为双间接块来显示。

选中的显示设备和显示格式在 fsdb 命令期间一直起作用,直到明确的改变。如果您指定的地址没有落在一个正确的边界内部,您也许会收到一个错误消息,指出这个不正确的调整。

如果您使用Number、h>, MapBlockNumberI 或者FragmentNumberb 位置子命令来访问索引节点信息的话,您可以单步遍历这些数据,检查每一个字节、字或者双字。通过输入下列子命令中的一种可以选择希望得到的显示模式。

B 在字节模式下开始显示。
D 在双字模式下开始显示。
W 在单字模式下开始显示。

根据这些信息,您可以向前或者向后移动。边界随着显示屏幕而前进,并且在显示的最后一项的地址上留了下来。通过按下“INTERRUPT”键,输出可以在任意时间终止。下面的这些符号允许在信息中移动:

Number 向前移动指定数目的当前有效单元。
Number 向后移动指定数目的当前有效单元。

下面的符号允许您存储当前的地址,并且很方便的返回到它。

> 存储当前地址。
< 返回到先前存储过的地址。

您可以用点、制表符和空格作为子命令的定界符,但是它们仅仅对从可能被解释为十六进制位的子命令定界十六进制数字是必要的。按下回车键(进入一个空白行)通过上一次显示的数据类型大小来增加当前的地址。也就是说,这个地址被设在了下一个字节、字、双字、目录条目或者索引节点,这就允许您单步遍历文件系统的区域。

fsdb 命令以一种适合数据类型的格式显示信息。字节、字和双字会作为十六进制地址来显示,这些地址后面跟着在那个地址上数据的十六进制表示,而且在括号中放入了相等的十进制数。 fsdb 命令相这个地址的末尾加入 .B 或者 .D 后缀以指出显示的字节或者双字的值。它显示目录作为目录口的偏移量,这些偏移量后面跟着十进制的索引节点号以及条目名称的字符表示。它将索引节点同描述每个元素的标号字段一同显示。环境变量控制数据的格式和时间字段。

修改子命令

通过使用字段规范(对于在索引节点的字段和在目录中的字段),您可以修改同这个地址规范相关联的信息。对于分配新的值,常规的形式是:助记符 运算符新的值这里助记符参数代表下面列表中所描述的字段之一:

下面的助记符被用作索引节点字段的名称并且指向当前工作的索引节点。

md 允许模式
ln 链接计数
uid 用户数量
gid 分组数目
sz 文件大小
aNumber 数据块数量(0 到 8),这里 Number 参数可以是一个位置子命令。
at 访问时间
mt 修改时间
maj 主要设备数
min 次要设备数

下面的助记符指的是索引节点和磁盘映射:

mf 映射空闲计数
ms 映射大小
mp 永久分配位图
mw 工作分配位图

下列助记符用于目录中字段的名称:

rl 目录条目记录的长度
nl 目录名称的长度
nm 目录名称

Operator参数有效的值包括:

注意:在试图修改文件系统之前必须卸装它。
= New-Value参数分配给指定的Mnemonic参数。
=+ 通过指定的New-Value参数增加了Mnemonic参数。缺省的New-Value参数是值 1。
=- 通过指定的New-Value减少助记符。缺省的新值是值 1。
=" New-Value参数指定的字符串分配给指定的助记符参数。如果当前的显示格式是目录的 d 地址规范并且没有指定助记符的话,目录名称被改变。新的目录名称不能长于先前的目录名称。

其它子命令:

其它子命令是:

q 退出。
xn 扩展目录 n 字节,这里 n 加上目录的当前大小在字节上不大于当前目录片段。
! 返回 shell。
O 锁定错误检查。

JFS2 子命令

通过它们完整的名字或者利用这些名字的子集可以输入这些子命令。至少必须输入粗体字。

a[lter] <block> <offset> <hex string> 修改磁盘数据。
b[map] [<block number>] 显示块分配映射。
dir[ectory] <inode number> [<fileset>] [R] 显示目录项。
d[isplay] [<block> [<offset> [<format> [<count>]]]] 显示数据。
dt[ree] {<block number> |<inode number>{a | f } } 显示 d 树节点。
h[elp] [<command>] 提供子命令的帮助。
ia[g] [<IAG number>] [a | <fileset>] 显示 IAG 页面。
im[ap] [a | <fileset>] 显示索引节点分配映射。
i[node] [<inode number>] [a | <fileset>] 显示索引节点。
q[uit] 退出 fsdb 命令。
su[perblock] [p | s] 显示高级块。
x[tree] {<block number> | <inode number>{a | f}} 显示 x 树节点。
a[lter] <block> <offset> <hex string>
其中:
<block> 块数量(十进制)
<offset> 在块的范围内的偏移量(十六进制)
<hex string> 十六进制位的字符串
 
 
 
改变磁盘数据。<hex string> 应包含偶数个数字。
 
 
b[map] [<block numbers>]
 
 
显示块分配的映射。
 
 <block number> 显示描述此块数量的 dmap 页面。
 
子命令:
m 修改当前节点
u 访问上一个级别的 bmap 页面
l 访问左兄弟节点
r 访问右兄弟节点
w 显示 wmap
(.,.)p 显示 pmap
s 显示 s 树。
x 退出子命令方式
 
 
dir[ectory] <inode number> [<fileset>][R]
 
<inode number> 目录的索引节点号(十进制)
<fileset> 数量,当前值必须是零
R 递归列出所有的子目录
 
 
 
显示目录条目。
 
 
d[isplay] [<block> [<offset> [<format>[<count>]]]]
 
<block> 块号(十进制)
<offset> 在块的范围内的偏移量(十六进制)
<format> 显示数据的格式(见下面)
<count> 要显示对象的数量(十进制)
 
在各种不同的格式下显示数据。
 
 
 
格式也许是下列中的一种:
a 美国信息交换标准码(ASCII)  
i 索引节点 结构 dinode
I 索引节点分配的映射 iag_t
s 高级块 结构高级块
x 十六进制  
 
 
dt[ree] {<block number> | <inode number>{a | f}}
 
<block number> 块号包含 d 树页面
<inode number> 目录的索引节点号(十进制)
{a | f} “a”指示索引节点号是一个聚集索引节点。 “f”指示索引节点号是文件集索引节点。
 
 
 
显示 b 树目录的根并且输入一个子命令方式,在这个方式中浏览这个树。
 
 
 
子命令:
m 修改当前的节点
f 步入空闲列表的条目
s 显示指定的插槽入口
[0-9]+ 显示指定的 stbl 入口
t 显示格式化过的 stbl
u 访问父节点(不是父目录)
d 访问子节点
x 退出子命令方式
 
 
h[elp] [<command>]
 
<command> 命令名称
 
打印帮助文本。如果没有参数则列出所有的命令。
 
 
ia[g] [<IAG number>] [a | <fileset>]
 
<IAG number> IAG 数量(十进制)
a 使用聚集节点表
 <fileset> 文件集数量(目前必须是零)
 
显示 iag 信息并且进入子命令模式。
 
 
 
子命令:
e 显示 / 修改索引节点范围映射
m 修改 iag
p 显示 / 修改持久映射
w 显示 / 修改工作映射
im[ap] [a | <fileset>]
 
a 使用聚集索引节点表
<fileset> 文件集数量(目前必须是零)
 
显示指定的索引节点映射并且进入子命令方式。
 
 
 
子命令:
e 显示 / 修改索引节点范围映射
m 修改 iag
p 显示 / 修改持久映射
 
 
i[node] [<inode number>] [a | <fileset>]
 
<inode number> 索引节点号(十进制)
a 使用聚集索引节点表
文件集 文件集的数量(目前必须是零)
 
显示索引节点信息并且进入子命令方式。
 
 
 
子命令:
m 修改索引节点
t 显示 / 修改索引节点的 b 树
e 显示 / 修改索引节点的 EA
注:
一旦显示索引节点的 EA,您可以修改它的 pxdTable 或者 eaDirectory 条目。指定修改选项,然后指定 pxdTable 或者 eaDirectory 指示符和偏移量到表中。
 
 
q[uit]
退出 fsdb 命令。
 
 
su[perblock] [p | s]
 
p 显示首要的高级块
s 显示次要的高级块
 
显示高级块数据。
x[tree] {<block number> | <inode number>{a | f} }
 
<block number> 块号(十进制)
<inode number> 索引节点号
{a | f} “a”指示索引节点号是一个聚集索引节点。 “f”指的索引节点号是文件集索引节点。
 
显示 x 树的一个索引节点并进入一个子命令方式,在其中浏览 x 树。
 
 
 
子命令:
m 修改当前节点
u 访问父节点
d 访问子节点
n 访问右兄弟进程
p 访问左兄弟进程
s 选择要查看的 xad 条目
x 退出子命令方式

JFS2 快照子命令

通过它们完整的名字或者使用这些名字的子集可以输入这些子命令。至少应该输入粗体字。

a[lter] <block> <offset> <hex string> 修改磁盘数据
b[map] 显示块映射 x 树的副本。
d[isplay] [<block> [<offset> [<format> [<count>]]]] 显示数据。
h[elp] [<command>] 提供子命令的帮助。
q[uit] 退出 fsdb 命令。
st[able] [<block number>] 显示总结快照表。
s[map] <block number> 显示快照位图。
su[perblock] 显示高级块。
a[lter] <block> <offset> <hex string>
其中:
<block> 块号(十进制)
<offset> 在块的范围内的偏移量(十六进制)
<hex string> 十六进制位的字符串
 
 
 
改变磁盘数据。<hex string> 应包含偶数个数字。
 
 
b[map]
 
 
显示块映射 x 树的副本。
 
 
d[isplay] [<block> [<offset> [<format>[<count>]]]]
 
<block> 块号(十进制)
<offset> 在块的范围内的偏移量(十六进制)
<format> 显示数据的格式(见下面)
<count> 要显示对象的数量(十进制)
 
在各种不同的格式下显示数据。
 
 
 
格式也许是下列中的一种:
a 美国信息交换标准码(ASCII)  
s 快照段头  
t 快照表页面  
x x 树页面  
 
 
h[elp] [<command>]
 
<command> 命令名称
 
提供子命令的帮助。
 
 
q[uit]
退出 fsdb 命令。
 
 
st[able] [<block number>]
其中:
<block number> 块号(十进制)
 
 
 
显示总结快照表。
 
 
s[map] [<block number>]
其中:
<block number> 块号(十进制)
 
 
 
显示快照位图。
 
 
su[perblock]
 
 
显示高级块。

示例

下面的这些示例表明了在一个 JFS 文件系统中当开始了 fsdb 这个命令之后您可以使用的子命令。

  1. 要显示索引节点,请输入:

    386i

    这个命令在索引节点格式下显示 386 索引节点。现在变成了当前的索引节点。

  2. 要将当前索引节点的链接计数更改为值 4,请输入:

    ln=4
  3. 要将当前索引节点的链接计数增加值 1,请输入:

    ln=+1
  4. 要显示与当前索引节点关联的文件的某部分,请输入:

    fc

    这个命令以 ASCII 码字节的形式显示与当前的索引节点相关的文件的块 0。

  5. 要显示目录的条目,请输入:

    2i.fd

    这个命令将当前的索引节点改变成为根索引节点(索引节点 2 ),然后显示与那个节点相关的第一个块中的目录条目。显示的最后的一个或者更多条目也许有一个索引节点号 0。这些是未用的目录块;这种条目不能在下一个示例操作。

  6. 要进入目录树的下一级,请输入:

    d5i.fc

    这个命令将当前索引节点更改成与目录字段 5 相关联的索引节点。然后,将这个文件中的第一个块以 ASCII 文本的形式显示出来。fc). 目录条目从 0 开始编号。

  7. 要显示知道其块号的块,请输入:

    1b.p0o

    这个命令以八进制的形式显示了文件系统中的高级块(块 1)。

  8. 要更改目录条目的索引节点,请输入:

    2i.a0b.d7=3

    这个命令将在根目录(2i)中目录条目 7 的索引节点改为 3 。这个例子也说明几个操作如何合在一行中。

  9. 要更改目录条目的文件名,请输入:

    d7.nm="chap1.rec"

    这个命令将目录条目 7 的名称字段改成了 chap1.rec

  10. 要显示与当前索引节点关联的文件的给定块,请输入:

    a2b.p0d

    这个命令显示了作为目录条目的当前索引节点的块 2

  11. 要显示块 7 中的单独间接块的内容,请输入:

    7b. p0S

    这个命令显示了分配给在块 7 中有单独间接块的索引节点的块号。

  12. 要显示磁盘映射的第一页,请输入:

    OM
  13. 要以十六进制显示永久块分配映射的前 10 个字,请输入:

    mp1.p10x

    这个命令表明在当前地址的分配位图;例如,在 0M。

文件

/usr/sbin 包含fsdb 命令。
/etc/filesystems 包含关于文件系统的信息。

相关信息

dfsck 命令、fsck 命令。

dir 文件、filsys.h 文件

环境杂项设备。

读子例程。

AIX 5L Version 5.2 System Management Concepts: Operating System and Devices 中的 File Systems 解释文件系统类型、管理、结构和维护。

《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『文件概述』提供了处理文件的信息。

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]