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