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).
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.
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. | |
Definir um projeto. |
Adicione uma entrada de projeto ao arquivo /etc/project e altere valores para essa entrada. | |
Excluir um projeto. |
Remova uma entrada de 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. | |
Obter informações sobre o membro do projeto. |
Exiba o membro do projeto atual do processo de chamada. | |
Criar uma nova tarefa. |
Crie uma nova tarefa em um projeto específico usando o comando newtask. | |
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. | |
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. |
Esta seção fornece exemplos de comando e opções usados com projetos e tarefas.
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 |
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) |
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 |
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 |
As opções -J e -T não podem ser usadas juntas.
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.
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 |
Este exemplo mostra como usar o comando projadd para adicionar uma entrada de projeto e o comando projmod para alterar essa entrada.
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 .
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: |
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 |
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: |
Adicione um comentário que descreva o projeto no campo de comentário.
# projmod -c `Book Auction Project' booksite |
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: |
Para vincular projetos, tarefas e processos a um grupo, consulte Definição de atributos de grupos e vinculação a um grupo.
Este exemplo mostra como usar o comando projdel para excluir um projeto.
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 .
Remova o projeto booksite usando o comando projdel.
# projdel booksite |
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: |
Efetue login como usuário mark e digite projects para visualizar os projetos atribuídos a esse usuário.
# su - mark # projects default |
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 — |
O comando ypcat project | projmod -f — ainda não está implementado.
Para verificar a sintaxe do arquivo /etc/project, digite o seguinte:
# projmod -n |
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) |
Efetue login como membro do projeto de destino, booksite.
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.
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.
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.
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 .
Se você for o proprietário do processo ou um membro do novo projeto, ignore esta etapa.
Obtenha o ID de processo do processo book_catalog.
# pgrep book_catalog 8100 |
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.
Confirme a tarefa para processar o mapeamento do IDE.
# pgrep -T 17 8100 |
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.
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.
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 .
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 |
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 |
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) |
Este procedimento assume os valores:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
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 .
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) |
Para remover o controle de recursos task.max-lwps no projeto myproject, use o comando projmod com as opções- r e -K.
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 .
Remova o atributo task.max-lwps e todos os seus valores do projeto myproject:
# projmod -r -K task.max-lwps myproject |
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.
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 .
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) |
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 .
Para remover os valores atuais de task.max-lwps do projeto myproject, digite:
# projmod -s -K task.max-lwps myproject |