Os parâmetros rlim_fd_cur e rlim_fd_max in /etc/system não são mais recomendados com o Solaris 10 e encaminhar. Deve ser usado o controle de recursos process.max-file-descriptor , que substitui a comunicação entre processos do System V. O advento é que a reinicialização do servidor não é mais necessária e você pode usar projetos sem afetar outros processos.
Em seguida, para alterar o limite rígido do projeto user.root é necessário também definir o nível de privilégio priv (o limite máximo) como o seguinte comando:
# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" user.root
Para alterar o limite flexível do projeto user.other , é necessário também definir o nível de privilégio como:
$ projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.other
Os projetos podem ser encontrados no arquivo /etc/project .
Este é um exemplo de projadd (para criar) e projmod (para definir):
# useradd test
# projadd -c "Test" 'user.test'
# projmod -s -K "project.max-shm-memory=(privileged,6GB,deny)" 'user.test'
# projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.test
# cat /etc/project|grep -i test
user.test:101:Test:::process.max-file-descriptor=(basic,1024,deny);project.max-shm-memory=(privileged,6442450944,deny)
#
projadd e projmod são valores persistentes. Para valores não persistentes, você deve usar o comando prctl .
Exemplo:
# prctl -n project.max-shm-memory -v 8gb -r -i project default
# prctl -n project.max-shm-memory -i project default
project: 3: default
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
usage 8.49MB
privileged 8.00GB - deny -
system 16.0EB max deny -
/etc/security/limits.conf e /etc/sysctl.conf são arquivos do Linux.
limits.conf define limites nos recursos do sistema em uma sessão de usuário no módulo pam_limits PAM. - > Isso é semelhante a projmod .
sysctl.conf é o arquivo que sysctl usa para modificar os parâmetros do kernel no tempo de execução. - > Isso é semelhante para modificar o /etc/system .
Se o usuário não tiver restrições sobre limits.conf , os valores padrão serão obtidos de:
Kernel: init process
Herdado: processo pai (configurações de fornecedores estão em /usr/lib/sysctl.d/ )
PAM: limits.conf (pode substituir o kernel e herdado)
Processar por si só (pode substituir PAM, Kernel e Inherited, " getrlimit , setrlimit , prlimit - obter / definir limites de recursos").
As alterações em limits.conf e sysctl.conf são persistentes.
Para definir limites para um usuário individual, você deve editar o arquivo limits.conf .
Como:
{account} soft as size (KB)
{account} hard as size (KB)
Exemplo:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
A reinicialização não é necessária para a modificação de limits.conf, mas os novos parâmetros serão aplicados apenas às novas sessões.
Se você quiser modificar um processo em execução, use prlimit .
Como:
prlimit --pid <pid> --<limit>=<soft>:<hard>
Exemplo:
prlimit --pid 12345 --nofile=1024:2048