文件监视模块监视一系列文件的添加、删除和修改信息。
本章讨论下列主题:
文件监视模块只能监视那些格式为每行有一个记录的文件。如果检测到被监视的文件发生了更改,该模块就会生成事件并将其显示在一个表中。该模块提供的默认功能可以处理一些常见的文件,例如 passwd、vfstab 等。
您可以添加、删除或编辑此缺省列表中的项。要添加一个新文件,您必须定义被监视文件的记录格式。您必须指定在以下情况下生成的与文件相关的警报的严重程度:
添加记录事件
删除记录事件
修改记录事件
仅使用文件监视模块监视那些不希望被频繁更改的系统文件,例如 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 文件中,第一个字段“用户名”是每个记录的键。每个记录的键是唯一的。 |
字段名 |
文件项中不同列的名称。 |
隐藏值标志 |
可以是以下值之一:
|
添加严重程度 |
可能值:信息、警告、错误、无。 |
删除严重程度 |
可能值:信息、警告、错误、无。 |
更改严重程度 |
可能值:信息、警告、错误、无。 |
记录格式 |
记录的格式。有关更多信息,请参阅记录格式。 |
您可以使用属性编辑器,对退出代码的正则表达式设置警报阈值。没有缺省的警报阈值。
如果要监视的文件不存在,文件监视模块将生成一个信息警报,但仍会把文件添加到文件监视表中,只是不显示与此文件相关的任何信息。
如果要监视的文件(例如某个目录)存在但无法打开,则该文件将被添加到文件监视表中,但不会显示与此文件相关的其他信息。
文件更改表监视文件并显示其记录的添加、删除或修改状况。
表 3–3 文件更改表
当文件监视模块检测到一个新的事件时,将显示该事件并生成相应的警报。“文件名”单元格的颜色会更改为与您将此文件添加到文件监视表时指定的事件值对应的颜色。事件选项为信息、警告、错误和无。
当您将新文件添加到模块监视的文件列表中时,必须提供 record format 属性的值,定义被监视文件的格式。如果将 fileparse 二进制文件指定为唯一需要的验证脚本,则必须指定此值。fileparse 二进制文件对文件执行的验证时会检查记录的格式。record format 是文件监视文件表中 file 项的隐藏属性。定义后您无法看到此属性,除非您选择编辑该文件的项。有关更多信息,请参见验证脚本。
下表列出了 record_format 支持的数据类型:
datatype = {STRING, INT, IPADDRESS, 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,该模块将忽略提供的参数。参数从文件已知的分隔符、注释和记录格式值中生成。如果您指定了某个值,所有的参数都将被模块中内置的参数替换。这样就确保了不会指定不受支持的注释和分隔符。
例如,如果您指定了 mytest.sh -a myarg,将会执行 mytest.sh 脚本,其参数为 -a myarg。
fileparse 是一个 C 二进制文件,位于 /var/opt/SUNWsymon/SysMgmtPack/filewch/scripts/ 中。
缺省的脚本文件列表中为“验证脚本”和“记录格式”设置了值。例如,对于 /etc/hosts,这些值设置如下:
“验证脚本”被设置为 fileparse
“记录格式”被设置为 IPADDRESS STRING STRING
该二进制文件根据文件监视表包含的 file 定义中指定的 record_format 来分析 filename。如果文件内容与输入文件 record_format 不一致,将报告错误。空白行和注释行将被跳过。该二进制文件返回以下值:
成功
无法打开文件
record_format 错误
文件格式错误
程序错误,例如内存不足
参数错误
本节介绍如何访问和使用文件监视模块。
加载文件监视模块。
有关如何加载模块的指导,请参阅《Sun Management Center 3.6 用户指南》。
在“导航器”窗口中,双击“本地应用程序”。
该类别将展开。
双击“文件监视”。
查看器将在“查看器”窗口中显示“文件监视”图标。
使用以下方法之一访问文件监视表:
双击“文件监视”选项。
在“查看器”窗口中,双击“文件监视”图标。
文件监视表和文件更改表将显示在右侧的窗格中。
如果尚未显示文件监视表,请按照访问文件监视模块中介绍的操作,使文件监视表显示出来。
在文件监视表的标题或任意选定行上单击鼠标按钮 3。
显示弹出菜单。
选择“新建行”。
此命令将添加一个文件。
提供以下属性值来描述要监视的文件的格式。
如果尚未显示文件监视表,请按照访问文件监视模块中介绍的操作,使文件监视表显示出来。
在显示文件名的行上单击鼠标按钮 3。
显示弹出菜单。
从弹出菜单中选择“编辑行”。
修改文件的路径名和记录格式定义。
单击 “确定” 。
如果您不希望监视某个文件,则必须从要监视的文件列表中删除该文件。
如果尚未显示文件监视表,请按照访问文件监视模块中介绍的操作,使文件监视表显示出来。
在显示文件名的行上单击鼠标按钮 3。
显示弹出菜单。
从弹出菜单中选择“删除行”。
此选项从要监视的文件列表中删除该文件。
从要监视的文件列表中删除文件时,先前检测到的有关该文件的事件不会自动从事件日志中删除。这些事件将继续显示在文件更改表中。要了解如何清除文件更改表,请参见将事件转储到日志。
文件监视表的最后一列显示事件监视的状态。“打开”表示事件监视被启用,“关闭”表示事件监视被禁用。您也可以使用 Sun Management Center 3.6 的管理作业功能,创建数据特性任务以将“事件监视”节点设置为“打开”或“关闭”。试图将节点设置为“打开”和“关闭”以外的值会导致任务失败。
如果尚未显示文件监视表,请按照访问文件监视模块中介绍的操作,使文件监视表显示出来。
在标题为“事件监视”的表列中,单击相应的表单元格。
必要时,可以使用窗口底部的滚动条来查看“事件监视”列。
表单元格变为一个下拉菜单,其中的选项有“打开”和“关闭”。
选择“打开”启用事件监视,或者选择“关闭”禁用事件监视。
将显示一个警告对话框,要求您确认所作的更改。
单击“确定”进行确认。
文件的事件监视状态即被更改。
当事件被转储到日志文件中时,文件更改表会被清除。
如果尚未显示文件更改表,请按照访问文件监视模块中介绍的操作,使文件更改表显示出来。
在需要清除其事件的文件名所在行的任意位置,单击鼠标按钮 3。
显示弹出菜单。
选择“将事件转储到日志”。
事件将被保存到日志目录下的 events_timestamp.log 文件中。随后探测查看器会提供日志文件的位置。