as alterações no /etc/security/limits.conf requerem uma reinicialização?

144

As alterações /etc/security/limits.confexigem uma reinicialização antes de entrar em vigor?

Como se eu tivesse um script que defina os seguintes limites /etc/security/limits.conf, isso requer a reinicialização do sistema antes que esses limites entrem em vigor?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Alexej Magura
fonte
2
logout deve ser suficiente
UVV
Edite o arquivo /etc/security/limits.d/90-nproc.conf e reinicie o sistema

Respostas:

108

Não, mas você deve fechar todas as janelas de sessões ativas. Eles ainda se lembram dos valores antigos. Em outras palavras, efetue logout e logon novamente. Cada nova sessão remota ou um shell seguro local entra em vigor com as alterações de limites .

Slyx
fonte
17
E se eu quiser definir os limites para um usuário que não possui um login, como se eu quiser definir o nofilelimite 94000para o mongodbusuário? Como eu fiz isso sem uma reinicialização? Eu precisaria apenas reiniciar o mongodbserviço?
Alexej Magura
2
@AlexejMagura Você pode modificar os limites dos processos em execução com o prlimitcomando
Bratchley
7
@ Gilles, obrigado pelas precisões, editei minha resposta para evitar ambiguidade. No entanto, iniciar um novo serviço usando sudo service mongodb restarté suficiente para permitir que o serviço seja executado com os novos valores limite.
Slyx
6
se você estiver usando o Ubuntu e o mongodb for iniciado pelo iniciante, a alteração desses limites não afetará o mongodb. Como upstartnão lê / etc / security config bugs.launchpad.net/ubuntu/+source/upstart/+bug/938669, você deve definir a limitestrofe em seu arquivo de configuração inicial.
usar o seguinte código
5
É outra questão. upstartpor design, ignora os limites estabelecidos /etc/security/limits.conf.
Slyx
35

Aplique as alterações diretamente a um processo em execução se você tiver o prlimit instalado (vem com o utilitário-linux-2.21)

prlimit --pid <pid> --<limit>=<soft>:<hard>

por exemplo

prlimit --pid 12345 --nofile=1024:2048

Consulte aqui

RAM
fonte
29

Para definir temporariamente o limite de arquivos abertos para o usuário no qual você está conectado no momento (por exemplo, 'root'): Você também pode usar o ulimitcomando para alterar os valores em seu shell atual. No entanto, os limites rígidos só podem ser ajustados para baixo, a menos que você seja root.

Exemplo:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Para alterar nofilepara 94000, você pode:

ulimit -n 94000
Boogy
fonte
15

Os limites são herdados de um processo pai para seus processos filhos. Processos em execução como root podem alterar limites arbitrariamente; outros processos não podem aumentar os limites rígidos. Portanto, os limites rígidos definidos pelo processo de login afetam todos os processos em uma sessão.

Se você alterar /etc/security/limits.conf, isso afetará todas as novas sessões e processos nessas novas sessões. Não afetará processos que já estão em execução, nem processos iniciados por processos que já estão em execução.

Portanto, se você precisar aumentar alguns limites, precisará sair e entrar novamente ou iniciar outra sessão (por exemplo ssh localhost, com ou em outro console).

Gilles
fonte
4

Para citar a resposta de @ Tombart

Esses limites serão aplicados após a reinicialização.

Se você deseja aplicar alterações sem reinicializar, modifique /etc/pam.d/common-sessionadicionando esta linha no final do arquivo:

session required pam_limits.so
serv-inc
fonte