В WLM процессы можно присваивать классам двумя способами:
Для автоматического присвоения процессов применяется набор правил присвоения, заданный администратором WLM. Можно задать два уровня правил:
Формат правил присвоения для обоих уровней совпадает.
Автоматическое присвоение основано на значениях атрибутов, связанных с процессом. Это следующие атрибуты:
Тег - это атрибут процесса, который представляет собой строку символов, заданную приложением с помощью API WLM.
Процесс присвоения состоит в последовательном сравнении значений атрибутов из правил присвоения с атрибутами процесса до нахождения правила, соответствующего присваиваемому процессу. Список правил присвоения хранится в файле с именем rules.
Правило присвоения - это текстовая строка, различные поля которой разделены
пробелами или знаками табуляции. Это следующие поля:
Имя | Это поле содержит имя класса, определенного в файле классов (rules) соответствующего уровня (суперкласса или подкласса). Имена классов должны быть не длиннее 16 символов и могут содержать только прописные и строчные буквы английского алфавита, цифры и символы подчеркивания. Правила присвоения для системных классов Unclassified, Unmanaged и Shared определить нельзя. |
Зарезервировано | Это поле зарезервировано для будущих версий. Оно должно присутствовать и состоять из одного символа минус (-). |
Пользователь | Это поле должно содержать либо один символ минус (-), либо список имен пользователей (из указанных в файле /etc/passwd). Элементы списка разделяются запятыми (,). Если перед именем пользователя будет указан восклицательный знак (!), этот пользователь будет исключен из класса. Можно также указывать шаблоны имен пользователей в формате шаблонов оболочки Korn. |
Группа | Это поле должно содержать либо один символ минус (-), либо список групп (из указанных в файле /etc/group). Элементы списка разделяются запятыми (,). Если перед именем группы будет указан восклицательный знак (!), эта группа будет исключена из класса. Можно также указывать шаблоны имен групп в формате шаблонов оболочки Korn. |
Приложение | Это поле должно содержать либо один символ минус (-), либо список имен исполняемых файлов. Описываемый класс будет присваиваться всем процессам, выполняющим один из перечисленных файлов. Имя исполняемого файла может содержать либо полный путь, либо шаблон пути в формате оболочки Korn. Элементы списка разделяются запятыми (,). Если перед именем файла будет указан восклицательный знак (!), этот файл будет исключен из класса. |
Тип | Это поле должно содержать либо один символ минус (-), либо список
атрибутов процесса. Возможные атрибуты:
|
Тег | Это поле должно содержать либо один символ минус (-), либо список тегов приложения. Тег приложения - это строка длиной до 30 символов. Элементы списка разделяются запятыми (,). |
Ниже приведен пример файла присвоения верхнего уровня rules для конфигурации Config (файл /etc/wlm/Config/rules):
* Этот файл содержит правила, применяемые WLM * для присвоения процессов суперклассам * * класс resvd пользователь группа приложение тип тег db1 - - - /usr/bin/oracle* _DB1 db2 - - - /usr/bin/oracle* _DB2 devlt - - dev - - - VPs - bob,ted - - - - acctg - - acct* - - - System - root - - - - Default - - - - - -
Ниже приведен пример файла rules для суперкласса devlt в файле /etc/wlm/Config/devlt/rules:
* Этот файл содержит правила, применяемые WLM * для присвоения процессов подклассам * суперкласса devlt * * класс resvd пользователь группа приложение тип тег hackers - jim,liz - - - - hogs - - - - 64bit+plock - editors - !sue - /bin/vi,/bin/emacs - - build - - - /bin/make,/bin/cc - - Default - - - - - -
Примечание: Строки файла rules, начинающиеся со звездочки (*) - это комментарии.
При создании процесса вызовом fork ему присваивается класс родительского процесса. Другой класс может быть присвоен в случае, когда процесс выполняет системный вызов, который может изменить один из атрибутов классификации процессов, например: exec, setuid (и связанные вызовы), setgid (и связанные вызовы), setpri и plock.
Примечание: При некоторых условиях повторное присвоение процессов не выполняется.
Сначала WLM проверяет файл rules верхнего уровня для определения суперкласса нового процесса. Для каждого правила из этого файла WLM сравнивает указанные в нем значения с текущими значениями атрибутов процесса. Правила просматриваются в том порядке, в котором они указаны в файле. Если правило соответствует процессу, этому процессу будет присвоен суперкласс, указанный в первом поле правила. Затем таким же способом будет просмотрен файл правил суперкласса для определения подкласса процесса.
Для того чтобы процесс соответствовал правилу, все его атрибуты должны совпадать со значениями, указанными в правиле. Ниже приведен список критериев, по которым определяется, соответствует ли атрибут значению поля из файла rules:
Как на уровне суперкласса, так и на уровне подкласса WLM просматривает правила в том порядке, в котором они перечислены в файле rules, и присваивает процессу класс первого подходящего правила. Порядок правил в файле крайне важен для правильной классификации, поэтому его необходимо учитывать при создании и изменении файла правил.
Ниже приведены примеры примеры применения файлов правил:
В приведенных выше примерах атрибут наследования всех классов был сброшен. В противном случае новым процессам был бы просто присвоен суперкласс и подкласс родительского процесса.