errctrl 命令

用途

修改或显示系统组件的错误检查属性。 还可为尚未创建的组件指定持久性属性值。

语法

errctrl [ - nr u ] ComponentSelector... 子命令 ...

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

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

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

errctrl -q [ - r u pP ] { 组件选择器...}

errctrl { -h | -? }

errctrl -P { errcheckon | errcheckoff }

描述

errctrl 命令修改或显示部分/全部组件的错误检查属性值。 可以按名称、别名、类型或子类型选择组件。

ComponentSelector 的支持的值如下所示:

-c
componentPatternList
-l
aliasPatternList
-t
typePatternList

每个列表包含一个或多个使用加引号的空格或逗号分隔的模型构成。 模型可以包含 fnmatch 子例程中所描述的特殊字符。 支持模式字符问号 (?) ,星号 (*) 和方括号 ([]) ,但不允许在方括号 ([]) 内使用字符类和整理顺序。 如果未使用其他 ComponentSelector ,那么指定 -c all 将选择所有组件。

errctrl 命令还可与 -p-P 标志一起使用来指定持久属性定制。 有关持久属性定制的更多信息,请参阅 持久定制

要即时或永久启用或禁用针对所有组件的错误检查,请指定带 -P 标志的 errcheckonerrcheckoff 子命令。 其他标志或子命令不允许与此种形式的命令一起使用。 bosboot 命令需要在重新启动过程中使设置持久有效。

修改过的属性依赖于命令行上指定的子命令。 可以在一次调用中指定多个子命令。 以下子命令可用:

描述
错误检查 开启错误检查。
错误检查 关闭错误检查。
errcheckminimal 将错误检查级别设置为 1。
错误检查正常 将错误检查级别设置为 3。
错误检查详情 将错误检查级别设置为 7。
错误检查级别= {0-9} 将错误检查级别设置为指定值。
低调倾向= {disp} 将低级严重性错误的处置设置为指定值。
medsevdisposition= {disp} 将中级严重性错误的处置设置为指定值。
disp 错误处置为以下某个值:
  • ignore(或 48)
  • log(或 64)
  • livedump(或 80)
  • isolate(或 96)
  • sysdump(或 112)

其他子命令可由单个组件识别。 将忽略组件不能识别的子命令。

当前属性值可以与 -q 标志一起显示。 如果未使用 ComponentSelector ,那么将显示支持错误检查的所有组件的属性值。

可以通过设置 netmalloc 组件的详细错误级别来启用网络内存的内存覆盖程序段检测系统。 将 netmalloc 组件的错误级别提升至 5 或更高(正常情况下缺省值为 3),以收集所有网络内存分配和空闲事件的完整网络内存 police 缓冲信息。 注意,将错误级别提升至 7 或更高可能会启用网络内存覆盖程序段检测系统。 如果仅要启用所有网络内存分配和空闲事件的 net_malloc_police 选项和突出内存分配 (OSTD) 日志记录,请将错误级别提升至 5。

有关修改错误级别的更多信息,请参阅 示例 。 要了解有关提高跟踪级别以收集 netmalloc 组件中的跟踪数据的更多信息,请参阅 ctctrl 命令。

此命令可用于将概率(频率)和值设置为下面的 netmalloc 函数。
  • police_frequency
  • frag_mask
概率是 1024 的分子(例如,10%: 102、5%: 51、1%: 10、0.1%: 1)

持久定制

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

ComponentSelectors 可以包含模式匹配字符。 因此,可为多个组件应用持久定制。 此外,可为同一组件应用多个定制(如果采用的是不同的 ComponentSelectors)。 如果在多个定制中指定了相互冲突的属性值,那么最后一个定制优先。 如果某个指定 ComponentSelector 组件已有定制,那么新定制将替换旧定制。

当指定持久定制时,允许使用多个 ComponentSelectors。无论何时,使用多个选择器就等于指定了多个命令,每条命令带一个组件选择器。 例如,定制“errctrl -p -l hdisk0 -l hdisk1 errchecknormal”相当于以下两个定制:
errctrl -p -l hdisk0 errchecknormal
errctrl -p -l hdisk1 errchecknormal

使用 -p-P 标志指定的定制在使用后不会被删除。 因此,单个定制可能会影响多个新组件。 可以使用 -x 标志来删除持久定制。 ComponentSelector 的指定方式必须与创建定制时的指定方式完全相同。 例如,如果用 ComponentSelector -l hdisk0 创建了定制,那么不能用 ComponentSelector -l hdisk[0] 删除定制,即使两个 ComponentSelector 均与相同的组件别名匹配。 如果删除持久定制,那么定制处于活动状态时创建的组件的属性将不会发生更改。

使用 -x-P 标志删除的持久定制将保持有效,除非您运行 博斯引导 命令并重新启动 AIX。 可使用 -x-p 标志在重新启动后删除使用 -P 标志创建的持久定制。 在此情况下,如果重新启动 AIX,那么定制将再次处于活动状态。

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

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

通过将 -q 标志与 -P -p 标志一起使用,可以查询持久定制。 指定 -q 标志和 -P 标志可以显示 /var/adm/ras/raspertune 文件中的行。 指定 -q 标志与 -p-r 标志一起使用,可以显示最初用 -r 标志指定的持久定制。 不使用 -r 标志时,-q -p 标志将显示使用或不使用 -u 标志时的持久定制。

持久定制允许指定多个子命令。 如果使用的子命令发生冲突,那么采用最后一个子命令。 例如,errchecknormalerrcheckdetail 子命令指定了同一错误检查属性的不同值,所以将使用最后一个指定的子命令。

标志

描述
-c ComponentList 指定以逗号或空格分隔的组件名称列表。 -c all 标志将选择所有组件(如果它仅是 ComponentSelector。)
-h-? 显示使用情况消息。
-l aliasList 指定逗号分隔或空间分隔的组件别名列表。
-n 立即应用子命令。 如果既未使用 -p 标志也未使用 -P 标志,那么此标志为缺省值。
-P 指定将在重新启动过程中持久有效的子命令。 必须运行 博斯引导 命令并重新启动 AIX 以使这些子命令处于活动状态。
-x 删除指定组件的持久定制。 所输入的 ComponentSelector 必须与最初指定定制时的输入完全相同。
-p 指定持久性子命令。 指定子命令将应用到新创建的组件。
-q 查询选定组件的属性设置。 此标志也可与 -p -P 标志一起使用来显示持久定制。
-r 对所有选定组件的子组件循环应用子命令。
-t type_subtypeList 指定具有 typetype_subtype 名称的空格或逗号分隔列表。 有效的 类型 名称包括 devicefilesystemnetworkservicesstorageuitypetype_subtype 名称的完整列表位于 /usr/include/sys/ras_base.h 标题文件中。
-U 对指定组件的祖代循环应用子命令。
注: 可以将 -u-r 标志一起使用。 可以在命令行上使用多个 -c-l-t 标志。

退出状态

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

安全性

RBAC 用户和可信 AIX 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限和特权的更多信息,请参阅 安全中的 Privileged Command Database。 要获取与此命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 要启用所有 JFS2 userdata 组件的详细错误检查,请输入:
    errctrl -c 'jfs2.filesystem.*.userdata' errcheckdetail
  2. 要指定新 JFS2 文件系统 userdata 组件的持久定制,请输入:
    errctrl -p -c 'jfs2.filesystem.*.userdata' errcheckminimal
    当前 userdata 组件将不受影响。
  3. 要指定将在重新启动过程中持久有效的定制,请输入:
    errctrl -P -c 'jfs2.filesystem.*.userdata' errcheckminimal
    如果您运行 博斯引导 命令并重新启动 AIX,那么对于所有 JFS2 用户数据组件,最小错误检查将生效。
  4. 要为所有当前和未来的 JFS2 用户数据组件设置最小错误检查,请执行以下操作: 请输入:
    errctrl -npP -c 'jfs2.filesystem.*.userdata' errcheckminimal
  5. 要为以太网组件指定多个持久性属性值,请输入:
    errctrl -P -c ethernet errcheckminimal medsevdisposition=80
  6. 要删除在示例 2 中指定的定制,请输入:
    errctrl -p -x -c 'jfs2.filesystem.*.userdata'
    
  7. 要列示所有持久向下递归的属性定制,请输入:
    errctrl -q -p -r
  8. 要列示 JFS2 组件及其子方法的当前错误检查属性值,请输入:
    errctrl -q -c jfs2 -r
  9. 要启用网络内存的内存覆盖程序段检测系统 (MODS),将错误级别提高到 netmalloc 组件的详细级别,请输入:
    errctrl errcheckdetail -c netmalloc
    errctrl errchecklevel=7 -c netmalloc
    注: 这还会对所有网络内存分配和空闲事件启用 net_malloc_police 选项。
  10. 要对所有网络分配和空闲事件启用 net_malloc_police 选项,将 netmalloc 组件的错误级别提升到 5 或更高,请输入:
    errctrl errchecklevel=5 -c netmalloc
    此命令还可启用网络内存的突出内存分配 (OSTD) 日志记录。
  11. 要将 netmalloc police 分配和空闲事件的频率改为 25%,将 police_frequency 函数的概率改为 256,请输入:
    errctrl police_frequency=256 –c netmalloc.police 

位置

/usr/sbin/errctrl

文件

描述
/var/adm/ras/raspertune 如果首先运行 bosboot 命令,那么包含持久属性定制的文件会在重新启动后应用。