В этой главе рассматривается использование проектов и задач для управления ресурсами Solaris.
Рассматриваются следующие темы:
Краткое описание средств проектов и задач приведены в Глава 2Проекты и задачи (обзор).
Если эти средства используются в системе Solaris с установленными зонами, то через интерфейсы системных вызовов, получающие на входе идентификаторы процессов и выполняемые в неглобальной зоне, видны только процессы в той же зоне.
Задача |
Описание |
Инструкции |
---|---|---|
Просмотр примеров команд и параметров, используемых с проектами и задачами |
Вывод идентификаторов задач и проектов, а также разнообразной статистики по выполняющимся в настоящее время процессам и проектам. | |
Определение проекта |
Добавление записи проекта к файлу /etc/project и изменение значений для этой записи. | |
Удаление проекта |
Удаление записи проекта из файла /etc/project. | |
Проверка допустимости файла project или базы данных проектов. |
Проверка синтаксиса файла /etc/project или сверка названия и идентификатора проекта с внешней службой имен в целях проверки уникальности. | |
Получение информации о членстве в проекте |
Вывод текущего членства вызывающего процесса в проекте. | |
Создание новой задачи |
Создание новой задачи в определенном проекте командой newtask. | |
Связывание выполняемого процесса с другой задачей и проектом |
Связывание номера процесса с новым идентификатором задачи в указанном проекте. | |
Добавление атрибутов проектов и работа с ними |
Добавление, редактирование, проверка допустимости и удаление атрибутов проектов командами административного управления базами данных проектов. |
В этом разделе приводятся примеры команд и параметров, используемых с проектами и задачами.
По команде ps с параметром -o отображаются идентификаторы задач и проектов. Например, для просмотра идентификатора проекта используется следующая команда:
# ps -o user,pid,uid,projid USER PID UID PROJID jtd 89430 124 4113 |
Команда id с параметром -pпозволяет в дополнение к идентификаторам пользователя и группы вывести текущий идентификатор проекта. Если указывается операнд user, то отображается проект, связанный с нормальной учетной записью этого пользователя:
# id -p uid=124(jtd) gid=10(staff) projid=4113(booksite) |
Если необходимо выполнить сопоставление только процессов с идентификаторами проектов из определенного списка, можно воспользоваться командами pgrep и pkill с параметром -J:
# pgrep -J projidlist # pkill -J projidlist |
Если необходимо отобразить сопоставление только для процессов, идентификаторы задач которых входят в определенный список, можно воспользоваться командами pgrep и pkill с параметром -T:
# pgrep -T taskidlist # pkill -T taskidlist |
Команда prstat с параметром - J используется для отображения статистических данных для процессов и проектов, выполняющихся в настоящий момент.
% prstat -J PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 21634 jtd 5512K 4848K cpu0 44 0 0:00.00 0.3% prstat/1 324 root 29M 75M sleep 59 0 0:08.27 0.2% Xsun/1 15497 jtd 48M 41M sleep 49 0 0:08.26 0.1% adeptedit/1 328 root 2856K 2600K sleep 58 0 0:00.00 0.0% mibiisa/11 1979 jtd 1568K 1352K sleep 49 0 0:00.00 0.0% csh/1 1977 jtd 7256K 5512K sleep 49 0 0:00.00 0.0% dtterm/1 192 root 3680K 2856K sleep 58 0 0:00.36 0.0% automountd/5 1845 jtd 24M 22M sleep 49 0 0:00.29 0.0% dtmail/11 1009 jtd 9864K 8384K sleep 49 0 0:00.59 0.0% dtwm/8 114 root 1640K 704K sleep 58 0 0:01.16 0.0% in.routed/1 180 daemon 2704K 1944K sleep 58 0 0:00.00 0.0% statd/4 145 root 2120K 1520K sleep 58 0 0:00.00 0.0% ypbind/1 181 root 1864K 1336K sleep 51 0 0:00.00 0.0% lockd/1 173 root 2584K 2136K sleep 58 0 0:00.00 0.0% inetd/1 135 root 2960K 1424K sleep 0 0 0:00.00 0.0% keyserv/4 PROJID NPROC SIZE RSS MEMORY TIME CPU PROJECT 10 52 400M 271M 68% 0:11.45 0.4% booksite 0 35 113M 129M 32% 0:10.46 0.2% system Total: 87 processes, 205 lwps, load averages: 0.05, 0.02, 0.02 |
Команда prstat с параметром -T используется для отображения статистических данных для процессов и задач, выполняющихся в настоящий момент.
% prstat -T PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 23023 root 26M 20M sleep 59 0 0:03:18 0.6% Xsun/1 23476 jtd 51M 45M sleep 49 0 0:04:31 0.5% adeptedit/1 23432 jtd 6928K 5064K sleep 59 0 0:00:00 0.1% dtterm/1 28959 jtd 26M 18M sleep 49 0 0:00:18 0.0% .netscape.bin/1 23116 jtd 9232K 8104K sleep 59 0 0:00:27 0.0% dtwm/5 29010 jtd 5144K 4664K cpu0 59 0 0:00:00 0.0% prstat/1 200 root 3096K 1024K sleep 59 0 0:00:00 0.0% lpsched/1 161 root 2120K 1600K sleep 59 0 0:00:00 0.0% lockd/2 170 root 5888K 4248K sleep 59 0 0:03:10 0.0% automountd/3 132 root 2120K 1408K sleep 59 0 0:00:00 0.0% ypbind/1 162 daemon 2504K 1936K sleep 59 0 0:00:00 0.0% statd/2 146 root 2560K 2008K sleep 59 0 0:00:00 0.0% inetd/1 122 root 2336K 1264K sleep 59 0 0:00:00 0.0% keyserv/2 119 root 2336K 1496K sleep 59 0 0:00:02 0.0% rpcbind/1 104 root 1664K 672K sleep 59 0 0:00:03 0.0% in.rdisc/1 TASKID NPROC SIZE RSS MEMORY TIME CPU PROJECT 222 30 229M 161M 44% 0:05:54 0.6% group.staff 223 1 26M 20M 5.3% 0:03:18 0.6% group.staff 12 1 61M 33M 8.9% 0:00:31 0.0% group.staff 1 33 85M 53M 14% 0:03:33 0.0% system Total: 65 processes, 154 lwps, load averages: 0.04, 0.05, 0.06 |
Совместное использование параметров -J и -T не допускается.
Команда cron использует функцию settaskid, что позволяет обеспечить выполнение каждого задания cron, at и batch в отдельной задаче, с соответствующим проектом по умолчанию для пользователя, отправляющего его на выполнение. Команды at и batch также сохраняют текущий идентификатор проекта, что позволяет обеспечить восстановление идентификатора проекта при выполнении задания at.
Команда su присоединяется к проекту по умолчанию целевого пользователя путем создания новой задачи в порядке симуляции входа в систему.
Для переключения проекта пользователя по умолчанию с помощью команды su введите:
# su user |
В этом примере показано добавление записи проекта командой projadd и изменение этой записи командой projmod.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Отобразите файл /etc/project по умолчанию командой projects -l.
# projects -l system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10::::system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: |
Добавьте проект с именем booksite. Назначьте проект пользователю с именем mark и укажите идентификатор проекта 4113.
# projadd -U mark -p 4113 booksite |
Снова просмотрите файл /etc/project.
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: booksite projid : 4113 comment: "" users : mark groups : (none) attribs: |
Добавьте в поле комментария описание проекта.
# projmod -c `Book Auction Project' booksite |
Просмотрите изменения в файле /etc/project .
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: booksite projid : 4113 comment: "Book Auction Project" users : mark groups : (none) attribs: |
Инструкции по связыванию проектов, задач и процессов с пулом приведены в Установка атрибутов пулов и связывание с пулом.
В этом примере показан способ удаления проекта командой projdel.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Удалите проект booksite командой projdel.
# projdel booksite |
Просмотрите файл /etc/project.
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: |
Войдите в систему как пользователь mark и введите команду projects для просмотра проектов, назначенных этому пользователю.
# su - mark # projects default |
При отсутствии параметров редактирования команда projmod проверяет допустимость содержимого файла project.
Для проверки допустимости карты NIS необходимо ввести следующую команду от имени суперпользователя:
# ypcat project | projmod -f — |
Команда ypcat project | projmod -f – еще не реализована.
Проверку синтаксиса файла /etc/project можно выполнить следующей командой:
# projmod -n |
Для вывода данных о принадлежности запускаемого процесса к проекту используется команда id с параметром -p.
$ id -p uid=100(mark) gid=1(other) projid=3(default) |
Войдите в систему как участник целевого проекта booksite.
Создайте новую задачу в проекте booksite с помощью команды newtask с параметром - v (подробный режим) для получения системного идентификатора задачи.
machine% newtask -v -p booksite 16 |
По команде newtask в указанном проекте создается новая задача, и в эту задачу помещается интерпретатор команд пользователя по умолчанию.
Просмотрите текущие данные по членству вызывающего процесса в проекте следующей командой.
machine% id -p uid=100(mark) gid=1(other) projid=4113(booksite) |
Процесс теперь является членом нового проекта.
В этом примере показано связывание выполняемого процесса с другой задачей и с новым проектом. Для этого необходимо либо стать суперпользователем, либо быть владельцем процесса и членом нового проекта.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Если текущий пользователь является владельцем процесса или членом нового проекта, этот этап можно пропустить.
Определите идентификатор процесса book_catalog.
# pgrep book_catalog 8100 |
Свяжите процесс 8100 с новым идентификатором задачи в проекте booksite.
# newtask -v -p booksite -c 8100 17 |
Параметр -c указывает, что команда newtask должна быть выполнена в отношении существующего именованного процесса.
Проверьте связь идентификаторов задачи и процесса.
# pgrep -T 17 8100 |
Для редактирования атрибутов проекта используются команды администрирования базы данных проектов projadd и projmod.
Параметр -K позволяет указать альтернативный список атрибутов. Атрибуты разграничиваются символом точки с запятой (;). Если параметр -K используется с параметром -a, атрибут или значение атрибута добавляется. Если параметр -K используется с параметром -r, атрибут или значение атрибута удаляется. Если параметр -K используется с параметром - s, выполняется замена атрибута или значения атрибута.
Для добавления значений к атрибуту проекта используется команда projmod с параметрами -a и - K. Если атрибут не существует, он создается.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Добавьте атрибут элемента управления ресурсами без значений task.max-lwps в проект myproject. Задача, вступающая в проект, оперирует только системным значением для этого атрибута.
# projmod -a -K task.max-lwps myproject |
Затем можно добавить значение для task.max-lwps в проекте myproject. Значение состоит из уровня полномочий, порогового значения и действия в случае достижения этого порогового значения.
# projmod -a -K "task.max-lwps=(priv,100,deny)" myproject |
Поскольку элементы управления ресурсами могут иметь несколько значений, той же командой к списку существующих значений можно добавить дополнительные значения.
# projmod -a -K "task.max-lwps=(priv,1000,signal=KILL)" myproject |
Множественные значения разделяются запятыми. Запись task.max-lwps теперь имеет следующий вид:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
В процедуре предполагаются значения:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Для удаления значения атрибута из элемента управления ресурсами task.max-lwps в проекте myproject используется команда projmod с параметрами -r и -K.
# projmod -r -K "task.max-lwps=(priv,100,deny)" myproject |
Если у task.max-lwps несколько значений, например:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
Удаляется первое совпадающее значение. Результат будет следующим:
task.max-lwps=(priv,1000,signal=KILL) |
Для удаления элемента управления ресурсами task.max-lwps в проекте myproject используется команда projmod с параметрами - r и -K.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Удалите атрибут task.max-lwps и все его значения из проекта myproject:
# projmod -r -K task.max-lwps myproject |
Для подстановки другого значения атрибута task.max-lwps в проекте myproject используется команда projmod с параметрами -s и -K. Если атрибут не существует, он создается.
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Замените текущие значения task.max-lwps новыми значениями, приведенными ниже:
# projmod -s -K "task.max-lwps=(priv,100,none),(priv,120,deny)" myproject |
Результат будет следующим:
task.max-lwps=(priv,100,none),(priv,120,deny) |
Перейдите в режим суперпользователя или воспользуйтесь эквивалентной ролью.
Роли содержат подтвержденные полномочия и привилегированные команды. Для получения дополнительной информации о ролях см. раздел Using the Solaris Management Tools With RBAC (Task Map) в System Administration Guide: Basic Administration.
Для удаления текущих значений task.max-lwps из проекта myproject введите следующую команду:
# projmod -s -K task.max-lwps myproject |