Sun Management Center 3.5 系统可靠性管理器用户指南

第 3 章 文件监视

文件监视模块监视一系列文件的添加、删除和修改信息。

本章讨论以下主题:

文件监视模块概述

文件监视模块只能监视那些格式为每行有一个记录的文件。如果检测到被监视的文件发生了更改,该模块就会生成事件并将其显示在一个表中。该模块提供的缺省功能可以处理一些常见的文件,例如 passwdvfstab 等。

您可以添加、删除或编辑此缺省列表中的项。要添加一个新文件,您必须定义被监视文件的记录格式。您必须指定在以下情况下生成的与文件相关的警报的严重程度:

仅使用文件监视模块监视那些不希望被频繁更改的系统文件,例如 passwd 文件,从而确保能够尽可能发挥更改通知的作用。

模块中显示以下文件监视表:

如果要监视的文件(例如目录)存在但无法打开,则该文件将被添加到文件监视表中,但不会显示与此文件相关的其他信息。而是生成信息警报。

在每个表标题的右侧,文件监视模块将列出关联的警报数目。文件监视表用于监视文件是否存在,而更改表用于监视对现有文件所作的更改。

当文件的时间戳改变时,文件监视模块使用验证脚本来验证该文件。您可以使用模块中包含的 fileparse 二进制文件,也可以创建自己的验证脚本。

此模块还可以对特定的文件启用或禁用事件监视模式,这与在文件扫描模块中启用或禁用模式匹配搜索的概念类似。例如,如果您禁用了 /etc/passwd 文件,并向该文件添加了一项,则底部表中不会出现相应的事件检测。直到 /etc/passwd 监视状态被再次启用,才会出现该项。

文件监视表

文件监视表列出由模块监视的所有文件。一些较为常用的属性显示在此表的顶层,而其它隐藏属性则显示在较低的层。有关隐藏属性的详细信息,请参见隐藏的文件属性

只有检测到文件存在后,才能监视对其所做的更改。如果某个文件不存在,文件监视模块可以检测到该文件变为存在(即其大小大于 0)的情况。例如,如果某个文件有两个记录,则文件监视模块虽然不能注意到这两个记录,但是可以监视以后对该文件进行的所有更改。

此表用以下七个系统文件进行初始化:

/etc/hosts 
/etc/aliases 
/etc/nsswitch.conf 
/etc/inittab 
/etc/vfstab 
/etc/passwd 
/etc/rmtab

显示的文件属性

文件监视表显示每个文件的信息,并提供下表中各个属性的数据。

表 3–1 文件监视表

字段 

说明 

文件 

文件的名称。 

完整路径 

文件的路径及其真实名称。 

文件大小 

文件大小,以字节为单位。 

文件拥有者 

文件的拥有者。 

文件组 

文件所属的组。 

文件权限 

对文件所具有的权限。 

时间戳 

上次更新文件的时间。 

验证脚本 

当文件的时间戳改变时,用于验证该文件的验证脚本的路径。将脚本保存在 /var/opt/SUNWsymon/ SysMgmtPack /filewch/scripts 中并提供相对路径。脚本的值是可选的。有关详细信息,请参见验证脚本

退出代码 

显示验证脚本上次执行时的退出代码。 

事件监视 

显示每个文件的文件监视模式的状态。有关详细信息,请参见禁用事件监视

隐藏的文件属性

下表列出了隐藏的文件属性,您可以从“行编辑器”窗口访问这些属性。要打开此窗口,请在任意行上单击鼠标按钮 3,并从弹出菜单中选择“编辑行”。

表 3–2 隐藏的文件属性

字段 

说明 

分隔符 

列之间的分隔符。 

注释字符 

分隔注释行的字符类型。 

字段数目 

每个文件项中的字段数目。 

数字键字段 

组合成键的字段数目。假定键位于记录的开始处。键是记录的标识符。例如,在 passwd 文件中,第一个字段“用户名”是每个记录的键。每个记录的键是唯一的。

字段名 

文件项中不同列的名称。 

隐藏值标志 

可以是以下值之一: 

  • FALSE = 显示更改过的值

  • TRUE = 不显示更改过的值

添加严重程度 

可能值:信息、警告、错误、无。 

删除严重程度 

可能值:信息、警告、错误、无。 

更改严重程度 

可能值:信息、警告、错误、无。 

记录格式 

记录的格式。有关详细信息,请参见记录格式

文件监视表警报

您可以使用属性编辑器,对退出代码的正则表达式设置警报阈值。没有缺省的警报阈值。

如果要监视的文件不存在,文件监视模块将生成一个信息警报,但仍会把文件添加到文件监视表中,只是不显示与此文件相关的任何信息。

如果要监视的文件(例如某个目录)存在但无法打开,则该文件将被添加到文件监视表中,但不会显示与此文件相关的其他信息。

文件更改表

文件更改表监视文件并显示其记录的添加、删除或修改状况。

文件更改表提供下表中列出的文件属性的数据。

表 3–3 文件更改表

字段 

说明 

文件 

文件的名称。 

行号 

行的编号。 

索引键 

被更改的记录的键字段中的值。 

更改类型 

表示是否发生以下操作之一:添加、删除或更改。 

更改的字段 

可以是以下值: 

  • 对于添加或删除,单元格显示“全部”。

  • 对于更改,单元格显示创建文件监视表时指定的列名。

旧值 

可以是以下值: 

  • 如果是新添加,单元格显示“NA”。

  • 如果此文件的隐藏值标志被设置为 True,则单元格显示“隐藏”。

  • 实际的旧值。

新值 

可以是以下值: 

  • 如果是删除,单元格显示“NA”。

  • 如果此文件的隐藏值标志被设置为 True,则单元格显示“隐藏”。

  • 实际的新值。

更改时间 

更改时的时间。 

文件更改表警报

当文件监视模块检测到一个新的事件时,将显示该事件并生成相应的警报。“文件名”单元格的颜色会更改为与您将此文件添加到文件监视表时指定的事件值对应的颜色。事件选项为信息、警告、错误和无。

记录格式

当您将新文件添加到模块监视的文件列表中时,必须提供 record format 属性的值,定义被监视文件的格式。如果将 fileparse 二进制文件指定为唯一需要的验证脚本,则必须指定此值。fileparse 二进制文件对文件执行的验证时会检查记录的格式。record format 是文件监视文件表中 file 项的隐藏属性。定义后您无法看到此属性,除非您选择编辑该文件的项。有关详细信息,请参见验证脚本

下表列出了 record_format 支持的数据类型:

datatype = {STRING, INT, IPADDRESS, ZERO_STRING, RANGE_INT, 
CHOICE_INT, CHOICE_STRING CONST}

其中,

STRING

该字符串不能为空

ZERO_STRING

该字符串可以为空或不为空

RANGE_INT

该整数必须与指定字符串之一相匹配

CHOICE_INT

该整数必须与指定整数之一相匹配

CHOICE_STRING

该字符串必须与指定字符串之一相匹配

CONST

该字段值必须匹配

其语法还支持以下值:


注意:

字符串选项列表中不允许使用字符“|”。如果这些字符串在监视文件中包含在双引号中,则它们必须嵌入在双引号中。INT 值只能是正值,不支持负值。


常量字符串声明时可以包含在双引号中,如下所示:

 "+" | "-" | STRING STRING 

可用的操作符如下:

operator = | , [], *

其中,

|

表示“或”。例如,- line-format = "+" | "-" | STRING STRING

[]

表示可选。例如,- line-format = STRING [STRING|IPADDRESS]

*

表示某种数据类型的零次或多次重复。例如: - line-format= IPADDRESS STRING STRING*

下面的例子显示了用于验证 /etc/passwd 的记录格式:

STRING STRING INT INT ZERO_STRING STRING ZERO_STRING | "+" | "-"

操作符的优先级如下:

[] , | , * 

验证脚本

在模块刷新的过程中,如果模块检测到文件的时间戳已改变,就会执行关联的验证脚本。“退出代码”字段将显示上次执行时的退出代码。当脚本字段被赋予新值时,模块将检查给定的路径是否是有效的文件。如果路径无效,“退出代码”字段将显示 NO_SUCH_SCRIPT。如果运行的验证脚本被终止,该字段还会显示 killed。在这种情况下,请指定要在其上生成退出代码警报的正则表达式。

您可以将自己的验证脚本放在 /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts 目录中,或者使用模块安装的 fileparse 二进制文件。

fileparse 二进制文件

fileparse 是一个 C 二进制文件,位于 /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts/ 中。

缺省的脚本文件列表中为“验证脚本”和“记录格式”设置了值。例如,对于 /etc/hosts,这些值设置如下:

该二进制文件根据文件监视表包含的 file 定义中指定的 record_format 来分析 filename。如果文件内容与输入文件 record_format 不一致,将报告错误。空白行和注释行将被跳过。该二进制文件返回以下值:

0

成功

1

无法打开文件

2

record_format 错误

3

文件格式错误

–1

程序错误,例如内存不足

–2

参数错误

访问并使用文件监视模块

本节介绍如何访问和使用文件监视模块。

访问文件监视模块
  1. 加载文件监视模块。

    有关如何加载模块的说明,请参见《Sun Management Center 3.5》。

  2. 在“导航器”窗口中,双击“本地应用程序”。

    该类别将展开。

  3. 双击“文件监视”。

    查看器将在“查看器”窗口中显示“文件监视”图标。

  4. 使用以下方法之一访问文件监视表:

    • 双击“文件监视”选项。

    • 在“查看器”窗口中,双击“文件监视”图标。

    文件监视表和文件更改表将显示在右侧的窗格中。

    显示文件监视表的模块浏览器。上下文将介绍此图形。
向要监视的文件列表中添加新文件
  1. 如果未显示文件监视表,请按照访问文件监视模块中的说明将其打开。

  2. 在文件监视表的标题或任意选定行上单击鼠标按钮 3。

    即可显示弹出菜单。

  3. 选择“新建行”。

    此命令将添加一个文件。

  4. 提供以下属性值来描述要监视的文件的格式。

    表 3–4 文件监视表属性

    字段 

    说明 

    名称 

    文件的名称。 

    文件名 

    文件的完整路径。 

    分隔符 

    分隔符的类型。 

    文件注释字符 

    分隔注释行的字符类型。此值只能是 tabcolonsemicoloncommahashpipe

    字段数目 

    每个文件项中的字段数目。 

    数字键字段 

    组合成键的字段数目。假定键位于记录的开始处。 

    字段名 

    表示文件中不同列的名称。 

    隐藏值标志 

    可以是以下值: 

    • FALSE = 显示该值。

    • TRUE = 不显示该值。此设置用于禁止权限不足的用户查看信息。

    添加严重程度 

    信息、警告、错误、无 

    删除严重程度 

    信息、警告、错误、无 

    更改严重程度 

    信息、警告、错误、无 

    验证脚本 

    用于验证文件的验证脚本的路径。 

    记录格式 

    fileparse 指定为唯一需要的验证脚本时,记录的格式。

    退出代码 

    脚本结束时返回的数字。 

    事件监视 

    文件的文件监视模式的状态。可以是以下值:

    • 打开 = 启用事件监视。

    • 关闭 = 禁用事件监视。

修改或编辑文件信息
  1. 如果未显示文件监视表,请按照访问文件监视模块中的说明将其打开。

  2. 在显示文件名的行上单击鼠标按钮 3。

    即可显示弹出菜单。

  3. 从弹出菜单中选择“编辑行”。

  4. 修改文件的路径名和记录格式定义。

  5. 单击“确定”。

从要监视的文件列表中删除文件

如果您不希望监视某个文件,则必须从要监视的文件列表中删除该文件。

  1. 如果未显示文件监视表,请按照访问文件监视模块中的说明将其打开。

  2. 在显示文件名的行上单击鼠标按钮 3。

    即可显示弹出菜单。

  3. 从弹出菜单中选择“删除行”。

    此选项从要监视的文件列表中删除该文件。


    注意:

    从要监视的文件列表中删除文件时,先前检测到的有关该文件的事件不会自动从事件日志中删除。这些事件将继续显示在文件更改表中。有关如何清除文件更改表的信息,请参见将事件转储到日志中


禁用事件监视

文件监视表的最后一列显示事件监视的状态。“打开”表示事件监视被启用,“关闭”表示事件监视被禁用。您也可以使用 Sun Management Center 3.5 的管理作业功能,创建数据特性任务以将“事件监视”节点设置为“打开”或“关闭”。试图将节点设置为“打开”和“关闭”以外的值会导致任务失败。

  1. 如果未显示文件监视表,请按照访问文件监视模块中的说明将其打开。

  2. 在标题为“事件监视”的表列中,单击相应的表单元格。

    必要时,可以使用窗口底部的滚动条来查看“事件监视”列。

    表单元格变为一个下拉菜单,其中的选项有“打开”和“关闭”。

  3. 选择“打开”启用事件监视,或者选择“关闭”禁用事件监视。

    将显示一个警告对话框,要求您确认所作的更改。

  4. 单击“确定”进行确认。

    文件的事件监视状态即被更改。

将事件转储到日志中

当事件被转储到日志文件中时,文件更改表会被清除。

  1. 如果未显示文件更改表,请按照访问文件监视模块中的说明将其打开。

  2. 在需要清除其事件的文件名所在行的任意位置,单击鼠标按钮 3。

    即可显示弹出菜单。

  3. 选择“将事件转储到日志”。

    事件将保存在日志目录下的 events_timestamp.log 文件中。 随后探测查看器会提供日志文件的位置。