Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones

Capítulo 3 Administração de projetos e tarefas

Este capítulo descreve como usar as facilidades de projeto e tarefa do gerenciamento de recurso do Solaris.

Os tópicos a seguir são tratados.

Para uma visão geral das facilidades de projetos e tarefas, consulte o Capítulo 2Projetos e tarefas (visão geral).


Observação –

Se você estiver usando estas facilidade em um sistema do Solaris com regiões instaladas, somente processos na mesma região serão visíveis através das interfaces de chamada do sistema que tomam IDs de processo quando estes comandos são executados em uma região não global.


Administração de projetos e tarefas (mapa de tarefas)

Tarefa 

Descrição 

Para instruções 

Visualizar exemplos de comandos e opções usados com projetos e tarefas. 

Exiba IDs de tarefas e projetos, exiba várias estatísticas para processos e projetos que estão atualmente em execução no sistema. 

Exemplos de comandos e opções de comando

Definir um projeto. 

Adicione uma entrada de projeto ao arquivo /etc/project e altere valores para essa entrada.

Como definir um projeto e visualizar o projeto atual

Excluir um projeto. 

Remova uma entrada de projeto do arquivo /etc/project.

Como excluir um projeto do arquivo /etc/project

Valide o arquivo project ou banco de dados de projeto.

Verifique a sintaxe do arquivo /etc/project ou a exclusividade do nome do projeto e do ID do projeto em relação ao serviço de identificação externo.

Como validar o conteúdo do arquivo /etc/project

Obter informações sobre o membro do projeto. 

Exiba o membro do projeto atual do processo de chamada. 

Como obter informações sobre o membro do projeto

Criar uma nova tarefa. 

Crie uma nova tarefa em um projeto específico usando o comando newtask.

Como criar uma nova tarefa

Associar um processo em execução a uma tarefa e um projeto diferentes. 

Associe um número de processo a um novo ID de tarefa em um projeto especificado. 

Como mover um processo em execução para uma nova tarefa

Adicionar atributos de projetos e trabalhar com eles. 

Use os comandos de administração do banco de dados de projeto para adicionar, editar, validas e remover atributos de projetos. 

Edição e validação de atributos de projeto

Exemplos de comandos e opções de comando

Esta seção fornece exemplos de comando e opções usados com projetos e tarefas.

Opções de comando usadas com projetos e tarefas

Comando ps

Use o comando ps com a opção -o para exibir IDs de tarefas e projetos. Por exemplo, para visualizar o ID do projeto, digite o seguinte:


# ps -o user,pid,uid,projid
USER PID   UID  PROJID
jtd  89430 124  4113

Comando id

Use o comando id com a opção -p para imprimir o ID de projeto atual, além dos IDs de usuário e grupo. Se o operando user for fornecido, o projeto associado a esse logo normal de usuário será impresso:


#  id -p
uid=124(jtd) gid=10(staff) projid=4113(booksite)

Comandos pgrep e pkill

Para coincidir somente processos com um ID de projeto em uma lista específica, use os comandos pgrep e pkill com a opção -J:


# pgrep -J projidlist
# pkill -J projidlist

Para coincidir somente processos com um ID de tarefa em uma lista específica, use os comandos pgrep e pkill com a opção -T:


# pgrep -T taskidlist
# pkill -T taskidlist

Comando prstat

Para exibir várias estatísticas para processos e projetos atualmente em execução no sistema, use o comando prstat com a opção - 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

Para exibir várias estatísticas para processos e tarefas atualmente em execução no sistema, use o comando prstat com a opção -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	

Observação –

As opções -J e -T não podem ser usadas juntas.


Uso de cron e su com projetos e tarefas

Comando cron

O comando cron emite um settaskid para assegurar que cada trabalho cron, at e batch seja executado em uma tarefa separada, com o projeto padrão apropriado para o usuário remetente. Os comandos at e batch também capturam o ID de projeto atual, o que assegura que o ID de projeto é restaurado ao executar um trabalho at.

Comando su

O comando su une o projeto padrão do usuário de destino criando uma nova tarefa, como parte da simulação de um login.

Para ativar o projeto padrão do usuário usando o comando su, digite o seguinte:


# su user

Administração de projetos

ProcedureComo definir um projeto e visualizar o projeto atual

Este exemplo mostra como usar o comando projadd para adicionar uma entrada de projeto e o comando projmod para alterar essa entrada.

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Visualize o arquivo /etc/project padrão no sistema usando 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: 
  3. Adicione um projeto com o nome booksite. Atribua o projeto a um usuário nomeado mark com o número do ID de projeto 4113.


    # projadd -U mark -p 4113 booksite
    
  4. Visualize novamente o arquivo /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: 
  5. Adicione um comentário que descreva o projeto no campo de comentário.


    # projmod -c `Book Auction Project' booksite
    
  6. Visualize as alterações no arquivo /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: 
Consulte também

Para vincular projetos, tarefas e processos a um grupo, consulte Definição de atributos de grupos e vinculação a um grupo.

ProcedureComo excluir um projeto do arquivo /etc/project

Este exemplo mostra como usar o comando projdel para excluir um projeto.

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Remova o projeto booksite usando o comando projdel.


    # projdel booksite
    
  3. Exiba o arquivo /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: 
  4. Efetue login como usuário mark e digite projects para visualizar os projetos atribuídos a esse usuário.


    # su - mark
    # projects
    default

Como validar o conteúdo do arquivo /etc/project

Se nenhuma opção de edição for fornecida, o comando projmod validará o conteúdo do arquivo project.

Para validar um mapa NIS, como superusuário, digite o seguinte:


# ypcat project | projmod -f —

Observação –

O comando ypcat project | projmod -f — ainda não está implementado.


Para verificar a sintaxe do arquivo /etc/project, digite o seguinte:


# projmod -n

Como obter informações sobre o membro do projeto

Use o comando id com o sinalizador -p para exibir o membro do projeto atual do processo que faz a chamada.


$ id -p
uid=100(mark) gid=1(other) projid=3(default)

ProcedureComo criar uma nova tarefa

  1. Efetue login como membro do projeto de destino, booksite.

  2. Crie uma nova tarefa no projeto booksite usando o comando newtask com a opção (verbosa) - v para obter o ID de tarefa do sistema.


    machine% newtask -v -p booksite
    16

    A execução de newtask cria uma nova tarefa no projeto especificado e coloca o shell padrão do usuário nessa tarefa.

  3. Visualize o membro do projeto atual no processo que chama.


    machine% id -p
    uid=100(mark) gid=1(other) projid=4113(booksite)

    O processo é agora um membro do novo projeto.

ProcedureComo mover um processo em execução para uma nova tarefa

Este exemplo mostra como associar um processo em execução com uma tarefa diferente e um novo projeto. Para executar esta ação, é necessário ser superusuário ou ser proprietário do processo, ou ser um membro do novo projeto.

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .


    Observação –

    Se você for o proprietário do processo ou um membro do novo projeto, ignore esta etapa.


  2. Obtenha o ID de processo do processo book_catalog.


    # pgrep book_catalog
    	8100
  3. Associe o processo 8100 a um novo ID de tarefa no projeto booksite.


    # newtask -v -p booksite -c 8100
    	17

    A opção -c especifica que newtask opera no processo nomeado existente.

  4. Confirme a tarefa para processar o mapeamento do IDE.


    # pgrep -T 17
    	8100

Edição e validação de atributos de projeto

Você pode usar os comandos de administração do banco de dados de projeto projadd e projmod para editar atributos de projeto.

A opção -K especifica uma lista de substituição de atributos. Atributos são delimitados por ponto-e-vírgula (;). Se a opção -K for usada com a opção -a, o atributo ou o valor do atributo será adicionado. Se a opção -K for usada com a opção -r, o atributo ou o valor do atributo será removido. Se a opção -K for usada com a opção - s, o atributo ou o valor do atributo será substituído.

ProcedureComo adicionar atributos e valores de atributo a projetos

Use o comando projmod com as opções -a e - K para adicionar valores a um atributo de projeto. Se o atributo não existir, ele será criado.

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Adicione um atributo de controle de recursos task.max-lwps sem valores no projeto myproject. Uma tarefa que entre no projeto tem somente o valor do sistema para o atributo.


    # projmod -a -K task.max-lwps myproject
    
  3. Você pode em seguida adicionar um valor a task.max-lwps no projeto myproject. O valor consiste em um nível privilegiado, uma valor de limiar e uma ação associada ao alcance do limiar.


    # projmod -a -K "task.max-lwps=(priv,100,deny)" myproject
    
  4. Uma vez que controles de recursos têm vários valores, você pode adicionar outro valor à lista de valores existente usando as mesmas opções.


    # projmod -a -K "task.max-lwps=(priv,1000,signal=KILL)" myproject
    

    Os vários valores são separados por vírgulas. A entrada task.max-lwps agora é como a seguir:


    task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)

ProcedureComo remover valores de atributo de projetos

Este procedimento assume os valores:


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Para remover um valor de atributo do controle de recursos task.max-lwps no projeto myproject, use o comando projmod com as opções -r and -K.


    # projmod -r -K "task.max-lwps=(priv,100,deny)" myproject
    

    Se task.max-lwps tiver vários valores, como:


    task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)

    O primeiro valor coincidente será removido. O resultado seria:


    task.max-lwps=(priv,1000,signal=KILL)

ProcedureComo remover um atributo de controle de atributos de um projeto

Para remover o controle de recursos task.max-lwps no projeto myproject, use o comando projmod com as opções- r e -K.

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Remova o atributo task.max-lwps e todos os seus valores do projeto myproject:


    # projmod -r -K task.max-lwps myproject
    

ProcedureComo substituir atributos e valores de atributos para projetos

Para substituir um valor diferente para o atributo task.max-lwps no projeto myproject, use o comando projmod com as opções -s e -K. Se o atributo não existir, ele será criado.

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Substitua os valores atuais task.max-lwps pelos novos valores mostrados abaixo:


    # projmod -s -K "task.max-lwps=(priv,100,none),(priv,120,deny)" myproject
    

    O resultado seria:


    task.max-lwps=(priv,100,none),(priv,120,deny)

ProcedureComo remover os valores existentes de um atributo de controle de recursos

  1. Torne-se superusuário ou assuma uma função equivalente.

    Funções contêm autorizações e comandos privilegiados. Para obter mais informações sobre funções, consulte Using the Solaris Management Tools With RBAC (Task Map) no System Administration Guide: Basic Administration .

  2. Para remover os valores atuais de task.max-lwps do projeto myproject, digite:


    # projmod -s -K task.max-lwps myproject