Os projetos fornecem uma maneira de impor limites ao uso de recursos para diferentes usuários e grupos. Eles podem ser usados para restringir o número de arquivos que um processo pode abrir, como tamanho máximo de arquivo, uso da CPU, alocação de memória e muito mais.

Todo processo e usuário pertence a um ou mais projetos. O projeto inicial de um usuário é determinado no momento do login e será o `padrão` ou o projeto definido na seção Atributos do Usuário deste módulo. Os usuários podem alternar para projetos diferentes usando o comando `newtask` .

Cada projeto possui uma lista de usuários e grupos que têm permissão para acessá-lo, por exemplo, alternando para ele com o comando `newtask` . Só porque um usuário é membro de um projeto, não significa necessariamente que ele automaticamente pertencerá a ele no momento do login - isso deve ser definido na seção Atributos do Usuário .

Os atributos mais importantes de um projeto são os limites de recursos que se aplicam aos usuários membros. Cada um tem os seguintes atributos:

Recurso
  O recurso que ele controla, como `process.max-file-descriptor` para o tamanho máximo de arquivo que pode ser criado, ou `process.max-cpu-time` para a quantidade de tempo de CPU que um processo pode consumir.
Tipo de recurso
  Determina quem pode modificar esse limite de recurso e quase sempre é definido como Privilegiado . Este atributo é opcional - se <Nenhum> estiver selecionado, o limite global do sistema para o recurso será aplicado. Os significados das outras opções são:
  - Privilegiado - Pode ser modificado apenas por chamadores privilegiados (superusuário).
  - Sistema - corrigido pela duração da instância do sistema operacional.
  - Básico - pode ser modificado pelo proprietário do processo de chamada.
Limite superior
  O limite superior de uso que um processo pode consumir antes que a ação seja acionada. Isso é inserido em bytes, segundos ou número de threads, dependendo do tipo de recurso.
Ação quando excedida
  Determina o que acontece com um processo que excede o limite. Normalmente, isso é definido como Negar , o que simplesmente causa falha na chamada do sistema que tentou exceder o limite. No entanto, as opções para enviar um sinal para o processo incorreto também podem ser úteis.