mksensor 命令

用途

为资源监视和控制 (RMC) 子系统定义传感器或微传感器。

语法

要定义传感器,请输入:

mksensor [ –n host1[,host2...] | –N { node_file | "–" }] [ –i seconds ] [ –c n ] [ –e 0 | 1 | 2 ] [ –u user-ID ] [–h] [ –v | –V ] sensor_name ["]sensor_command["]

要定义微传感器,请输入:

mksensor -m [ –n host1[,host2...] | –N { node_file | "–" }] [ –i seconds ] [–h] [ –v | –V ] microsensor_name microsensor_module [["]microsensor_arguments["]]

描述

mksensor 命令向资源监视和控制 (RMC) 子系统定义传感器资源。 传感器是一种属性可受监视的 RMC 资源。 您可以使用事件/响应资源管理器(ERRM)命令来设置对传感器属性的监视。 定义的响应操作将在受监视的传感器事件发生时运行。 这使管理员能够扩展 RMC 监视能力而无需写资源管理器。

对于传感器,sensor_command 参数指定传感器资源管理器将运行的命令或脚本,用以设置(并在随后更新)传感器属性值。 在监视传感器属性之后,传感器资源管理器会设置属性值。 然后,传感器资源管理器会在定义的时间间隔更新这些值。

对于微传感器,microsensor_module 参数指定微传感器资源管理器将调用的可装入模块的路径名,以设置(并在随后更新)微传感器属性值。 在监视微传感器属性之后,微传感器资源管理器会设置属性值。 然后,微传感器资源管理器会在定义的时间间隔更新这些值。 使用 -m 标志来创建微传感器。

此外,您还可以使用 chsensorrefsensor 来更新传感器或微传感器属性值。 lssensor 命令显示您可以使用传感器命令或微传感器模块来设置的传感器或微传感器属性的值(如果这些属性受监视)。 如果这些属性不受监视,那么 lssensor 不会显示其值。 要除去传感器或微传感器,请使用 rmsensor 命令。

mksensor 命令可以在任何节点上运行。 要在管理域或对等域中的一个或多个节点上定义传感器或微传感器,请使用 -n 标志。 可以使用 -N node_file 标志来指示节点名在文件中,而不是使用 -n 标志指定多个节点名。 使用 -N "–" 从标准输入中读取节点名。

如果系统上安装了 Cluster Systems Management (CSM),可以将 CSM 定义的节点组用作节点名值来引用多个节点。 有关使用 CSM 节点组和 CSM nodegrp 命令的信息,请参阅 CSM: Administration GuideCSM: Command and Technical Reference

一个传感器由下列属性组成,这些属性可以使用传感器命令来设置:
Float32
此传感器资源的类型 float32 属性。
Float64
此传感器资源的类型 float64 属性。
Int32
此传感器资源的类型 int32 属性。
Int64
此传感器资源的类型 int64 属性。
Quantum
此传感器资源的类型 quantum 属性。
String
此传感器资源的类型 string 属性。
Uint32
此传感器资源的类型 uint32 属性。
Uint64
此传感器资源的类型 uint64 属性。

传感器命令通过以传感器资源管理器可以解析的格式将值发送至标准输出来设置属性值。 格式为 attr=value。 例如,如果传感器命令将 Int32 属性设为 57,那么会将 Int32=57 写入标准输出。 为了设置多个属性值,传感器命令可以将多个 attr=value 对写入标准输出。 attr=value 对可以在一行或多行上。 如果传感器命令输出并不采用 attr=value 格式,那么假设它为字符串并将值放在 String 属性中。

传感器命令使用创建该传感器资源的用户标识来运行。 在监视传感器资源时,会以 -i 标志指定的时间间隔(以秒为单位表示)运行传感器命令。 缺省的时间间隔为 60 秒。 指定值 0 以指示不按时间间隔来运行传感器命令。 在这种情况下,通常使用 refsensor 命令来更新传感器值。

使用 -e 标志可控制如何解释 sensor_command 的退出值。 根据此设置,如果将 sensor_command 的退出值视为错误,将不设置传感器属性,并将信息写入审计日志。

一个微传感器由下列属性组成,这些属性可以使用微传感器装入模块来设置:

Float32
此微传感器资源的类型 float32 属性
Float32Array
此微传感器资源的类型 float32 数组属性
Float64
此微传感器资源的类型 float64 属性
Float64Array
此微传感器资源的类型 float64 数组属性
Int32
此微传感器资源的类型 int32 属性
Int32Array
此微传感器资源的类型 int32 数组属性
Int64
此微传感器资源的类型 int64 属性
Int64Array
此微传感器资源的类型 int64 数组属性
Quantum
此微传感器资源的类型 quantum 属性。
String
此微传感器资源的类型 string 属性。
StringArray
此微传感器资源的类型 string 数组属性。
UInt32
此微传感器资源的类型 uint32 属性。
UInt32Array
此微传感器资源的类型 uint32 数组属性。
UInt64
此微传感器资源的类型 uint64 属性。
UInt64Array
此微传感器资源的类型 uint64 数组属性。

微传感器资源管理器将调用微传感器装入模块来设置微传感器属性的值。 有关如何使用微传感器的信息,请参阅 管理 RSCT

标志

–m
指定要定义的资源是微传感器资源。
-n host1[,host2...]
指定应该在其中定义传感器的一个或多个节点。 在缺省情况下,传感器在本地节点上定义。 此标志只适用于管理域或对等域。
-N { node_file | "-" }
指定从文件或标准输入读取节点名。
使用 -N node_file 来指示节点名在文件中。
  • node_file 中的每行包含一个节点名
  • 列 1 中的数字符号 (#) 指示该行是注释
  • 忽略节点名左侧的所有空白字符
  • 忽略节点名右侧的所有字符

在管理域或对等域中使用 -N "–" 从标准输入读取节点名。

-i
指定时间间隔,传感器命令将以此时间间隔运行来更新传感器的属性值,或者微传感器模块将以此时间间隔运行来更新微传感器的属性值。 seconds(整数值) 必须大于或等于 10。 缺省时间间隔为 60 秒。

只有在监视传感器资源时才以指定的时间间隔运行传感器命令。 只有在监视微传感器资源时才以指定的时间间隔运行微传感器模块。 如果时间间隔设置为 0,那么传感器命令或微传感器模块将不会自动运行。

a

使用此标志与使用 refsensor 命令来刷新传感器无关。

-c n
指定该传感器是否需要特殊的处理。 n 可以是下列其中一个值:
0
表示无需特殊处理。 这是缺省情况。

传感器命令将以定义给 sensor_name 的时间间隔运行。 当监视开始或 lssensor 命令运行时,传感器命令将 运行。

1
指示监视开始时传感器命令将运行。 传感器命令也将以定义给 sensor_name 的时间间隔运行。 当 lssensor 命令运行时,传感器命令将 运行。

不推荐指定此值,除非您期望传感器命令马上运行。 如果传感器命令不马上运行,那么可能会阻塞对传感器资源管理器发出的其他请求。 将不会处理这些请求,除非传感器命令完成运行。

2
指示 SavedData 字段中的命令输出不会永久保存到 SavedData 持久资源属性。 如果未指定此值,那么只要命令的标准输出包含以下行,传感器资源管理器就会更新注册表的资源表中的数据: SavedData="any-string"
3
指示值 12的组合。
4
指示在监视停止后传感器资源管理器将运行传感器命令。
5
指示值 14的组合。
6
指示值 24的组合。
7
指示值 124的组合。
-e 0 | 1 | 2
指定传感器资源管理器如何解释 sensor_command 的退出值,如下所示:
0
没有 sensor_command 的退出值是一个错误。
1
来自 sensor_command 的除 0 以外的退出值是错误。
2
来自 sensor_command 的退出值 0 是错误。
缺省值为 1。 当退出值解释为错误时将不更新传感器属性。 将为错误向审计日志写入信息。
-u 用户标识
指定将使用其特权来运行此传感器命令的用户的名称。 应已在系统上定义此用户。 user-ID 的缺省值是与当前有效用户标识关联的用户名。
–h
将命令的用法语句写到标准输出。
–v | –V
将命令的详细消息写到标准输出。

参数

[ " ] 微传感器参数 [ " ]
指定一个将传递至微传感器模块回调函数的字符串。 微传感器资源管理器将根据微传感器参数中的空白字符,将字符串分成一个字符串数组。 在定义微传感器后,不能更改微传感器参数。

如果微传感器参数包含任何空白字符或者任何可能由 shell 进行解释的特殊字符,那么必须使用双引号将空白字符或特殊字符引起来。 当微传感器自变量用双引号括起时,必须在 "内部" 双引号之前包含反斜杠转义字符 (\)。 还必须在美元符号 ($) 之前包含 \

微型传感器模块
指定可装入微传感器模块的路径名。 模块的签名由微传感器资源管理器加以存储,并在使用模块时进行验证。 在定义微传感器后,不能更改微传感器模块。
微传感器名称
指定要定义的微传感器的名称。
[ " ] sensor_command [ " ]
指定传感器资源管理器将用于设置传感器的属性值的命令或脚本。 不应在此参数中调用任何传感器资源管理器命令 (chsensorlssensormksensorrefsensorrmsensor)。

如果 sensor_command 包含任何空白字符或者任何可能由 shell 进行解释的特殊字符,那么必须使用双引号将空白字符或特殊字符引起来。

sensor_command 括在双引号中时,必须在 "内部" 双引号之前包含反斜杠转义字符 (\)。 还必须在美元符号 ($) 之前包含 \ 。 请参阅示例 2 以获取更多信息。

传感器名称
指定要定义的传感器的名称。

安全性

要使用此命令创建传感器,您需要 IBM.Sensor 资源类的写许可权。

要使用此命令创建微传感器,您需要 IBM.MicroSensor 资源类的写许可权。

许可权在联系系统的访问控制表 (ACL) 文件中指定。 请参阅 管理 RSCT ,以获取有关 ACL 文件以及如何对其进行修改的详细信息。

退出状态

0
命令已成功运行。
1
输入了不正确的标志和参数的组合。
n
基于 RMC 子系统可能返回的其他错误。

环境变量

CT_CONTACT
CT_CONTACT 环境变量设置为主机名或 IP 地址时,该命令将联系指定主机上的资源监视和控制 (RMC) 守护程序。 如果没有设置该环境变量,那么该命令会联系运行该命令的本地系统上的 RMC 守护程序。 该命令显示或修改的资源类或资源位于建立连接的系统上。
CT_IP_AUTHENT
如果存在 CT_IP_AUTHENT 环境变量,那么 RMC 守护程序将使用基于 IP 的网络认证,与 CT_CONTACT 环境变量中的 IP 地址所指定系统上的 RMC 守护程序联系。 仅当 CT_CONTACT 设为 IP 地址时,CT_IP_AUTHENT 才有意义;它不依赖于域名系统(DNS)服务。
CT_MANAGEMENT_SCOPE
确定用来与 RMC 守护程序进行会话的管理作用域,以监视和控制资源和资源类。 管理作用域确定了能够监视和控制资源和资源类的可能的目标节点集。
有效值为:
0
指定本地作用域。
1
指定本地作用域。
2
指定对等域作用域。
3
指定管理域作用域。
如果此环境变量设置,那么使用本地作用域。

限制

不应在 sensor_command 参数中调用任何传感器资源管理器命令 (chsensorlssensormksensorrefsensorrmsensor) ,因为这可能会导致死锁。

实现细节

该命令是用于 "AIX®操作系统的 "rsct文件集和用于 "Linux®、Solaris 和 Windows 平台的 "rsct-3.1.0.0-0.""平台"".rpm"软件包的一部分,其中 "平台为 "i386"、"ppc"、"ppc64"、"s390"或 "x86_64

示例

  1. 要创建名为 Sensor1 的新传感器以运行脚本 /usr/bin/updateSensor1,该脚本将每 30 秒更新一次传感器属性 (一旦受监视) ,请输入:
    mksensor -i 30 Sensor1 "/usr/bin/updateSensor1"
    /usr/bin/updateSensor1 的内容可能类似于:
    #!/usr/bin/perl
    my $int32 = some_fn_that_generates_i32_value;
    my $string = some_fn_that_generates_string_value;
    print "Int32=$int32 String=$string";
    exit 0;
    示例条件如下:
    mkcondition -r IBM.Sensor -s "Name==Sensor1" -e "Int32 > 100" Sensor1Int32
    使用响应“E-mail root anytime”时,启动监视命令可以为:
    startcondresp Sensor1Int32 "E-mail root anytime"
  2. 使用 sensor_command 值创建名为 Sensor1 的传感器
    df -m /var | sed '1d' | sed 's/%//g' | /bin/awk '{ print "Int32="$4}',
    请输入:
    mksensor Sensor1 "df -m /var | sed '1d' | sed 's/%//g' | /bin/awk \ 
    '{ print \"Int32=\"\$4}'"
    sensor_command 括在双引号中时,必须在 "内部" 双引号之前包含反斜杠转义字符 (\)。 还必须在美元符号 ($) 之前包含 \ 。 因此,在此示例中,当传感器命令子串 "Int32="$4mksensor 命令的一部分时,它将变为 \"Int32=\"\$4
  3. 要创建名为 Sensor3 的传感器,该传感器在 /u/joe/common_nodes 文件中列出的节点上运行 /usr/bin/checkhealth 脚本,请输入:
    mksensor -N /u/joe/common_nodes Sensor3 "/usr/bin/checkhealth"
    其中 /u/joe/common_nodes 包含:
    # common node file
    #
    node1.myhost.com    main node
    node2.myhost.com    backup node
  4. 要创建名为 IBM.msensorq 的微传感器,该微传感器使用共享模块 /usr/lib/msensors/msensorq 并且需要参数 db=abcconfirm=yesretry=yesmirror=no,请输入:
    mksensor -m IBM.msensorq /usr/lib/msensors/msensorq \ 
    "db=abc confirm=yes retry=yes mirror=no"

位置

/opt/rsct/bin/mksensor