ctctrl 命令

用途

修改或显示系统组件的跟踪属性。 您可以为尚未创建的组件指定持久属性值。

语法

要修改某些或所有组件的跟踪属性,请使用以下命令:

ctctrl [-nru] ComponentSelector ... 子命令 ...

要将组件缓冲区转储到文件中,请使用以下命令:

ctctrl [-ru] {-D [-d dirName]} ComponentSelector ...

要为尚未创建的组件指定持久属性值,请使用以下命令:

ctctrl -p [ -r u ] ComponentSelector... 子命令 ...

要指定在下次重新启动后生效的持久属性值,请使用以下命令:

ctctrl -P [ -r u ] ComponentSelector... 子命令 ...

要删除持久属性定制,请使用以下命令:

ctctrl -x { - P |-p} [ -r u ] ComponentSelector...

要查询现有组件的跟踪属性或者查询现有持久属性定制,请使用以下命令:

ctctrl -q [-PP] {组件选择器 ...}

要显示用法消息,请使用以下命令:

ctctrl { -h | -? }

要持久地对所有组件启用或禁用内存跟踪,请使用以下命令:

ctctrl -P { memtraceon | memtraceoff }

ComponentSelector 参数值如下所示:

-c
componentPatternList
-l
aliasPatternList
-t
typePatternList
每个列表都由一个或多个模式组成,这些模式是由空格或逗号隔开的。 模型可以包含 fnmatch 子例程中所描述的特殊字符。 您可以使用以下模式字符:
  • ?
  • *
  • [ ]
不能在方括号 ([]) 内使用字符类和整理顺序。 如果未指定其他 ComponentSelector 参数,那么指定 -c all 将选择所有组件。

描述

ctctrl 命令修改或显示某些或所有组件的跟踪设置。 可以按名称、别名、类型或子类型选择组件。 还可将 ctctrl 命令与 -p-P 标志配合使用来指定持久属性定制。 请参阅 持久定制 部分。

要立即持续启用或禁用所有组件的组件级别跟踪,请指定带有 -P 标志的 memtraceonmemtraceoff 子命令。 不能将其他标志或子命令与 -P 一起指定。 必须使用 bosboot 命令使设置在引导之间具有持久性。

修改的属性取决于传递到 ctctrl 命令的子命令。 可以在单个 ctctrl 调用中使用多个子命令。 您可以指定以下子命令:

描述
memtraceon 打开内存跟踪方式。
memtraceoff 关闭内存跟踪方式。
memtraceresume 恢复内存跟踪方式。
memtracesuspend 暂挂内存跟踪方式。
memtracebufsize=sz 更改内存跟踪方式中分配的专用缓冲区的大小。
memtraceminimal 将内存跟踪方式的级别更改为 1
memtracenormal 将内存跟踪方式的级别更改为 3
memtracedetail 将内存跟踪方式的级别更改为 7
memtracemax 将内存跟踪方式的级别更改为最详细的级别 9
memtracelevel=d 更改内存跟踪方式的跟踪级别。 将跟踪级别设置为指定的级别。
memtracefilltime 显示数据保留时间(即:填满专用内存缓冲区预计要花费的时间)。 仅在内存跟踪方式打开的情况下可用。
systraceon 打开通过系统跟踪执行的跟踪。
systraceoff 关闭通过系统跟踪执行的跟踪。
systraceminimal 将系统跟踪方式的级别更改为 1
systracenormal 将系统跟踪方式的级别更改为 3
systracedetail 将系统跟踪方式的级别更改为 7
systracemax 将系统跟踪方式的级别更改为最详细的级别 9
systracelevel=d 更改用于通过系统跟踪所执行跟踪的级别。 将跟踪级别设置为指定的值。
注: memtracesuspendmemtracere书, 和 memtracefilltime 子命令不能与 -p-P 标志一起使用,因为这些子命令不能用于持久定制。

可以按各个组件识别先前列表中没有的其他子命令。 将忽略组件不能识别的子命令。

可以使用 -q 标志来显示当前属性值。 如果没有指定 ComponentSelector 参数,那么将对使用组件级别跟踪的所有组件显示属性值。

持久定制

-p-P 标志允许为尚未创建的系统组件指定属性值。 因此,可以在新建组件处于活动状态之前为其定制属性。 -p 标志用于指定将来将创建但在重新启动 AIX® 操作系统之前的组件的定制。 -P 标志用于指定将在下次重新启动后生效的定制。 这些定制将添加到 /var/adm/ras/raspertune 文件。 必须运行 bosboot 命令以将这些定制保存在引导映像中,并重新启动 AIX 操作系统以使这些定制生效。

由带有 -p-P 标志的 ComponentSelectors 参数指定的组件可以包含模式匹配字符。 因此,可为多个组件应用持久定制。 此外,如果使用不同组件,还可将多个定制应用于同一组件。 如果在多个定制中指定了相互冲突的属性值,那么最后一个定制优先。 如果指定组件已存在定制,那么新定制会替换旧定制。

指定持久定制时,可以使用 ComponentSelectors 参数指定多个组件。 在所有这些情况下,使用多个选择器与指定多个命令等价,每个命令用于一个组件选择器。 例如,定制 ctctrl -p -l hdisk0 -l hdisk1 memtracenormal 等同于以下两个定制:
ctctrl -p -l hdisk0 memtracenormal
ctctrl -p -l hdisk1 memtracenormal

使用 -D 标志时,所选组件的跟踪缓冲区快照将转储到文件中。 缺省目录为 /var/adm/ras/trc_ct,但您可以指定可选目标目录。 每个组件使用一个跟踪文件;所有文件均以组件的完整名称命名。 这些文件的生成和管理方式与 trace 命令针对多个处理器文件的生成和管理方式相同。

即使在使用了用 -p-P 标志指定的定制后,也不会删除它们。 因此,单个定制可能会影响多个新组件。 您可以指定 -x 标志来删除持久定制。 您必须使用在创建定制时指定 ComponentSelector 参数所用的相同方式来指定它。 例如,如果使用 -l hdisk0 指定的组件创建定制,那么不能使用 -l hdisk[0] 指定的组件删除该定制,即使这两个组件都具有相同的组件别名。 删除持久定制时,不会对在定制处于活动状态时创建的组件的属性进行更改。

除非运行 博斯沃 命令并重新启动 AIX 操作系统,否则使用 -x- 标志删除的持久定制仍然有效。 您可以在重新启动后使用 -x-p 标志来删除使用 -P 标志创建的持久定制。 在这种情况下,如果重新启动 AIX 操作系统,那么定制将再次处于活动状态。

如果不知道所做的定制但想要恢复缺省系统设置,那么可使用下列其中一种方式:
  • /var/adm/ras/raspertune 文件中,删除与定制相关联的行。 然后运行 bosboot 命令并重新启动 AIX 操作系统。
  • 读取 /var/adm/ras/raspertune 文件以了解指定的适当标志和参数。 然后使用 -x 标志来删除定制,如示例 11中所示。 运行 bosboot 命令并重新启动 AIX 操作系统。
指定持久定制时,可以使用 -r-u 标志。 使用一个标志为指定的组件选择器指定其他名称空间。 同时使用两个标志等于两次单独的命令调用(每次调用使用其中一个标志)。 例如,持久定制 ctctrl -p -l hdisk0 -u -r memtracedetail 等价于以下两个单独的定制:
ctctrl -p -l hdisk0 -u memtracedetail
ctctrl -p -l hdisk0 -r memtracedetail
以下持久性定制都是独特的,并且可以修改或单独删除。
ctctrl -p -l hdisk0 memtracedetail
ctctrl -p -l hdisk0 -r memtracedetail
ctctrl -p -l hdisk0 -u memtracedetail

向下递归定制(由 -r 标志指定)优先于所有其他定制,不管它们相对于其他非向下递归定制指定的顺序如何都是如此。

您可以将 -q 标志与 -P-p 标志配合使用来查询持久定制。 指定 -q 标志和 -P 标志可以显示 /var/adm/ras/raspertune 文件中的行。 指定带有 -p-r 标志的 -q 标志会显示最初使用 -r 标志指定的持久定制。 如果没有 -r 标志,那么 -q-p 标志会显示使用或不使用 -u 标志指定的持久定制。

可以为持久定制指定多个子命令。 如果指定冲突子命令,那么将使用最后一个子命令。 例如,memtracenormalmemtracedetail 子命令为同一个错误检查属性指定不同值,所以将使用最后指定的子命令。

标志

描述
-n 立即应用子命令。 如果既未使用 -p 标志也未使用 -P 标志,那么此标志为缺省值。
-c componentList 指定组件名称的列表。 在列表中使用逗号或空格隔开名称。 如果 -c all 标志是唯一的 ComponentSelector,那么它将选择所有组件。
-D 获得组件的专用内存缓冲区的快照,并将它转储到文件中(每个组件一个文件)。 可以使用 -d 标志来更改缺省输出目录。
-d dirName 指定供转储用的目录。 缺省目录为 /var/adm/ras/trc_ct。 如果某些文件已存在,那么新转储请求将覆盖这些文件。 -p-P 标志与 -d 标志互斥。
-h-? 显示使用情况消息。
-l aliasList 指定组件别名列表。 使用逗号或空格隔开别名。
-P 指定多次重新启动时保持持久状态的子命令。 必须运行 bosboot 命令并重新启动 AIX 才能使用这些命令。
-x 删除指定组件的持久定制。 必须完全按照最初指定定制时输入组件选择器的方式来输入这些组件选择器。
-p 指定持久性子命令。 指定的子命令将应用于最近创建的组件。
-q 显示组件的组件跟踪设置。 还可将此标志与 -p-P 标志配合使用来显示持久定制。
-r 对所有选定组件的子组件循环应用子命令。
-t 类型_子类型 指定 typetype_subtype 名称的列表。 使用逗号或空格隔开名称。 有效的 类型 名称包括 devicefilesystemnetworkservicesstorageuitypetype_subtype 名称的完整列表存放在 /usr/include/sys/ras_base.h 头文件中。
-u 对指定组件的祖代循环应用子命令。
注: 可以同时使用 -u-r 标志。 您可以在命令行上使用多个 -c-l-t 标志。

退出状态

描述
0 命令成功完成。
>0 发生错误。

示例

  1. 要转储所有“组件跟踪”缓冲区的内容,请使用以下命令:
    ctctrl -D -c all
  2. 要将 mbuf 组件跟踪缓冲区的内容转储到 /tmp,请使用以下命令:
    ctctrl -D -d /tmp -c mbuf
  3. 要查询所有具有“组件跟踪”功能的组件的状态,请使用以下命令:
    ctctrl -q
  4. 要仅查询 netinet 组件的状态,请使用以下命令:
    ctctrl -c netinet -q -r
  5. 要对 socket 组件开启内存跟踪方式,请使用以下命令:
    ctctrl memtraceon -c socket
  6. 要持久关闭所有组件的“组件跟踪”功能,请使用以下命令:
    ctctrl -P memtraceoff
    注: 需要 bosboot 才能使命令在引导之间具有持久性。
  7. 要为新 JFS2 文件系统的用户数据组件指定持久定制,请使用以下命令:
    ctctrl -p -c 'jfs2.filesystem.*.userdata' memtraceminimal
    注: 现有用户数据组件不受影响。
  8. 要指定在多次重新启动时仍然保持持久状态的定制,请使用以下命令:
    ctctrl -P -c 'jfs2.filesystem.*.userdata' memtraceminimal
    如果运行 bosboot 命令并重新启动 AIX,那么最小组件跟踪将对所有 JFS2 用户数据组件生效。
  9. 要为所有 JFS2 用户数据组件设置最低组件跟踪,请使用以下命令:
    ctctrl -npP -c 'jfs2.filesystem.*.userdata' memtraceminimal
  10. 要为以太网组件指定多个持久属性值,请使用以下命令:
    ctctrl -P -c ethernet memtraceminimal memtracebufsize=1m
  11. 要删除示例 7 中指定的定制,请使用以下命令:
    ctctrl -p -x -c 'jfs2.filesystem.*.userdata'
  12. 要列出所有向下递归的持久属性定制,请使用以下命令:
    ctctrl -q -p -r
  13. 要对 netmalloc 组件启用所有组件跟踪,请使用以下命令:
    ctctrl memtracedetail -c netmalloc
    ctctrl memtracelevel=7 -c netmalloc
  14. 要在组件跟踪缓冲区中收集 net_malloc_police 跟踪事件,请使用以下命令:
    ctctrl  memtracedetail -c netmalloc.police

位置

/usr/sbin/ctctrl

文件

描述
/var/adm/ras/raspertune 如果首先运行 bosboot 命令,那么包含持久属性定制的文件会在重新启动后应用。
/var/adm/ras/trc_ct 保存了缓冲区的所有快照的缺省目录。
trc_ct.master 主跟踪文件,指向所有组件的跟踪文件。