Администрирование ОС Solaris

       

Понятие "проект" в Solaris


Проектом в Solaris называется единица администрирования, предназначенная для оптимального управления ресурсами системы. К проекту могут относиться любые пользователи и группы, и каждый пользователь или группа могут входить в несколько проектов. В большой системе удобно определить ряд проектов в базе проектов (файле /etc/project или соответствующем файле базы NIS).

Проект характеризуется уникальным идентификатором проекта (PROJID). Каждый пользователь обязательно относится к некоему проекту по умолчанию, и какой именно это проект, определяется при входе пользователя в систему. Пользователь обязательно имеет главный проект (по аналогии с главной группой), но может участвовать в нескольких проектах.

Каждый процесс также обязательно ассоциируется с каким-нибудь проектом. Это не обязательно главный проект пользователя, запустившего процесс, так как пользователь волен отнести запущенный им процесс к любому из проектов, участником которых он является. Отнести пользователя или группу к проекту можно либо в описании пользователя в файле /etc/user_attr, либо в файле проектов /etc/project. Для тех случаев, когда администратор не позаботился о том, чтобы отнести пользователей к определенным проектам, в системе имеется предопределенный проект default, к которому относятся все пользователи, группы и процессы, для которых явным образом не указано иное.

Главный проект пользователя определяется при входе в систему следующим образом:

  • если в файле /etc/user_attr запись об этом пользователе имеет атрибут project, то в качестве главного проекта пользователю назначается указанный таким образом проект;
  • если в /etc/project имется проект с именем user.UID, где UID совпадает с UID пользователя, то он назначается главным проектом пользователя;
  • если в /etc/project есть проект group.groupname и groupname совпадает с именем главной группы пользователя, то этот проект назначается главным пользователю;
  • если в базе проектов есть проект с именем default, то главным назначается он.
  • Проверка перечисленных условий производится в указанном выше порядке.
    В качестве базы данных проектов может использоваться не только файл /etc/project, но и база данных NIS или LDAP. Порядок обращения к службам имен (файлу, NIS или LDAP) определяется в файле /etc/nsswitch.conf:

    project: files nis ldap

    При использовании PAM может оказаться полезным также изучить страницу руководства pam_projects(5).

    Если при входе для пользователя не удалось определить главный проект, вход пользователю запрещается.

    При внесении изменений в базу данных проектов изменения коснутся только процессов, которые будут запущены после этого, и тех пользователей, которые войдут в систему после сохранения изменений. На уже запущенные процессы и уже работающих пользователей изменения не повлияют.

    Файл /etc/project имеет следующий формат:

    projname:projid:comment:user-list:group-list:attributes

    где:

    projname - это имя проекта (в нем не должно быть точек, запятых или двоеточий), то есть уникальный идентификатор проекта;

    projid - неотрицательное целое число не большее 2147483647;

    comment - описание проекта;



    user-list - список пользователей, входящих в проект, имена через запятую;

    group-list - список групп, входящих в проект, имена групп через запятую;

    attributes - атрибуты проекта в формате имя=значение.

    Везде, где указано "список", может стоять звездочка (подразумевает "все"), имя может быть предварено восклицательным знаком, что означает "кроме этого" (!groupname - все указанные группы, кроме groupname).

    По умолчанию файл /etc/project выглядит так:

    system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10::::

    Помимо редактирования файла вручную вы можете пользоваться программами projadd, projmod и projdel для добавления, изменения или удаления проектов. Для получения информации о соответствии процессов проектам следует запускать программы ps, id, pgrep, prstat:

    ps -o user,pid,uid,projid USER PID UID PROJID root 672 0 1 root 625 0 1 root 654 0 1 root 652 0 1 root 808 0 1

    id -p uid=0(root) gid=1(other) projid=1(user.root)



    Синтаксис вызова pgrep:

    pgrep -J projidlist

    например:

    pgrep -J 1 | more 347 460 461 345 368 426 435 378 427 411 412 414 434 436 438 459 463 467 469 470 649 650

    prstat -J PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 345 root 63M 14M sleep 59 0 0:01:35 0,8% Xsun/1 622 root 15M 2532K sleep 59 0 0:00:02 0,6% dtterm/1 470 root 141M 55M sleep 49 0 0:02:07 0,5% soffice.bin/4 820 root 7624K 4576K cpu0 59 0 0:00:00 0,3% prstat/1 672 root 4728K 696K sleep 49 0 0:00:00 0,0% bash/1 652 root 24M 3784K sleep 49 0 0:00:01 0,0% sdtimage/1 654 root 79M 10M sleep 19 10 0:00:08 0,0% java/15 195 root 5660K 0K sleep 59 0 0:00:00 0,0% syslogd/13 175 root 2160K 0K sleep 59 0 0:00:00 0,0% lockd/2 170 root 3028K 0K sleep 59 0 0:00:00 0,0% in.named/1 237 root 1348K 0K sleep 59 0 0:00:00 0,0% powerd/2 183 root 6108K 644K sleep 59 0 0:00:00 0,0% automountd/3 322 root 4360K 0K sleep 59 0 0:00:00 0,0% snmpdx/1 347 root 8632K 0K sleep 59 0 0:00:00 0,0% dtlogin/1 158 root 2412K 0K sleep 59 0 0:00:00 0,0% inetd/1

    PROJID NPROC SIZE RSS MEMORY TIME CPU PROJECT 1 30 480M 99M 84% 0:04:00 2,3% user.root 0 38 135M 5788K 4,8% 0:00:00 0,0% system

    Total: 68 processes, 185 lwps, load averages: 0,04, 0,14, 0,14 Пример 11.1. Результаты работы программы pgrep

    Эта программа выполняется как интерактивная на полном экране (подобно top).


    Содержание раздела