Объектный класс Извещение об ошибках определяет условия и действия, выполняемые при записи сообщений об ошибках в протокол ошибок. Эти условия и действия задаются пользователем в объекте извещения об ошибках.
Каждый раз, когда в протокол заносится ошибка, демон извещения об ошибках определяет, совпадает ли запись протокола ошибок с критериями выбора какого-либо объекта класса извещения об ошибках. Для каждого объекта, для которого обнаружено совпадение, демон выполняет запрограммированное действие, называемое также способом извещения.
Объектный класс Извещение об
ошибках располагается в файле /etc/objrepos/errnotify.
Объекты извещения об ошибках добавляются к объектному классу с помощью команд
Администратора объектных данных (ODM). Объекты извещения об ошибках
содержат следующие дескрипторы:
en_alertflg | Указывает, следует ли предупреждать об ошибке. Этот дескриптор используется агентами предупреждений, связанными с программами сетевого управления. Допустимы следующие значения дескриптора: |
en_class | Идентифицирует класс записей протокола ошибок, проверяемых на
совпадение. Допустимы следующие значения дескриптора
en_class:
|
en_crcid | Указывает идентификатор ошибки. |
en_label | Задает метку, связанную с конкретным идентификатором ошибки, согласно определению в выводе команды errpt -t. |
en_method | Определяет запрограммированное пользователем действие (например, сценарий
оболочки или строку команд), которое выполняется при занесении в протокол
ошибки, совпадающей с критериями выбора данного объекта извещения об
ошибках. Для выполнения этого действия демон извещения об ошибках
применяет команду sh -c.
Ниже перечислены ключевые слова, которые автоматически развертываются демоном извещения об ошибках как аргументы способа извещения.
|
en_name | Однозначно идентифицирует объект. Это уникальное имя используется при удалении объекта. |
en_persistenceflg | Указывает, должен ли объект извещения об ошибках автоматически удаляться
при повторном запуске системы. Например, чтобы избежать ошибочной
генерации сигнала, при повторном запуске системы не должны сохраняться объекты
извещения об ошибках, которые содержат действия, отправляющие сигнал другому
процессу. Это связано с тем, что при повторном запуске системы процесс,
который принимает сигнал, и его идентификатор не сохраняются.
За удаление объекта извещения об ошибках в нужное время отвечает его создатель. В том случае, когда процесс завершается без удаления объекта извещения об ошибках, дескриптор en_persistenceflg гарантирует, что при повторном запуске системы устаревшие объекты извещения об ошибках будут удалены. |
en_pid | Задает идентификатор процесса (PID), который будет использоваться при идентификации объекта извещения об ошибках. Для объектов с указанным PID дескриптор en_persistenceflg должен быть равен 0. |
en_rclass | Идентифицирует класс ресурса, в котором происходит сбой. В классе аппаратных ошибок класс ресурса - это класс устройства. В классе программных ошибок это понятие неприменимо. |
en_resource | Идентифицирует имя ресурса, в котором происходит сбой. В классе аппаратных ошибок имя ресурса - это имя устройства. |
en_rtype | Идентифицирует тип ресурса, в котором происходит сбой. В классе аппаратных ошибок тип ресурса - это тип устройства, заданное в объектном классе "устройства". |
en_symptom | Разрешает извещение об ошибке, сопровождаемое строкой признаков, если равен TRUE. |
en_type | Идентифицирует уровень серьезности записей протокола ошибок, проверяемых
на совпадение. Допустимы следующие значения дескриптора
en_type:
|
Добавлять объекты в класс извещений об ошибках разрешено только процессам, которые запускаются пользователем root.
errnotify: en_name = "sample" en_persistenceflg = 0 en_class = "H" en_type = "PERM" en_rclass = "disk" en_method = "errpt -a -l $1 | mail -s 'Disk Error' root"
Для добавления объекта в класс извещения об ошибках введите:
odmadd /tmp/en_sample.add
Команда odmadd добавляет объект извещения об ошибках, содержащийся в файле /tmp/en_sample.add, в файл errnotify.
odmget -q"en_name='sample'" errnotify
Команда odmget находит объект извещения об ошибках с именем en_name = "sample" в файле errnotify и показывает его. Вывод команды выглядит следующим образом:
errnotify: en_pid = 0 en_name = "sample" en_persistenceflg = 0 en_label = "" en_crcid = 0 en_class = "H" en_type = "PERM" en_alertflg = "" en_resource = "" en_rtype = "" en_rclass = "disk" en_method = "errpt -a -l $1 | mail -s 'Ошибка диска' root"
odmdelete -q"en_name='sample'" -o errnotify
Команда odmdelete находит объект извещения об ошибках с именем en_name = "sample" в файле errnotify и удаляет его из объектного класса извещения об ошибках.
Error Logging Special Files в книге AIX 5L Version 5.1 Files Reference.
Демон errdemon в книге AIX 5L Version 5.1 Commands Reference.
Команды errclear, errdead, errinstall, errlogger, errmsg, errpt, errstop, errupdate, odmadd, odmdelete и odmget в книге AIX 5L Version 5.1 Commands Reference.
Функция errlog в книге AIX 5L Version 5.1 Technical Reference: Base Operating System and Extensions Volume 1.
Служба ядра errsave в книге AIX 5L Version 5.1 Technical Reference: Kernel and Subsystems Volume 1.