Configure o limite de “arquivos abertos” no Linux por usuário. Não é possível configurar mais de 1024

3

Eu tento aumentar o limite de arquivos abertos para determinados usuários no CentOS 5.5 Linux. Eu adicionei uma nova linha ao /etc/security/limits.conf:

seed     hard    nofile          10240

Então teste:

runuser -s /bin/bash - seed -c "ulimit -S -c 0>/dev/null 2>&1; ulimit -a"
0
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 8185
max locked memory       (kbytes, -l) 32
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) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

E, como você pode ver, o limite de arquivos abertos ainda é 1024. Se eu configurar o limite como 1000, ele será aplicado. Então, não consigo configurar o limite mais de 1024.

Como posso fazer isso? Preciso definir as configurações apenas para 1 usuário, não para todo o sistema.

    
por Andrey Zentavr 27.10.2010 / 12:25

4 respostas

3

Eu suspeito que runuser não passe pelo processo de "login" do PAM que aplica o limits.conf, ou talvez o pam_limits.so esteja desabilitado. No Debian, pelo menos, /etc/pam.d/su tem pam_limits.so comentado para que os limites sejam herdados do usuário que está executando o su.

    
por 27.10.2010 / 13:59
1

Para aumentar o limite de arquivos abertos para determinados usuários no CentOS 5.5 Linux:

1 - no arquivo '/etc/security/limits.conf' adicione:  - link

...
# seed osuser - extended max number of open files
seed    hard    nofile    10240

# End of file

2 - no arquivo ' / etc / profile ' ou em ' /home/seed/.bash_profile ' adicionar:

if [ $USER = "seed" ]; then
        ulimit -n 10240
fi
    
por 27.10.2010 / 23:38
0

Em sistemas Linux, existem três locais onde os limites de arquivo são definidos, cada um independente do outro:

  1. o kernel, como em / proc / sys / fs / file-max, controlado via sysctl fs.filemax ou /etc/sysctl.conf

  2. o ulimit no shell, conforme controlado por ulimit -n

  3. PAM, conforme definido em /etc/security/limits.conf

O número que tem precedência e, na verdade, determina o limite de seus processos é o menor dos três acima.

    
por 17.10.2013 / 20:57
0

Usando "ulimit -a" você vê o limite flexível, 1024 no redhat 5.8 é o limite padrão para o software

vim /etc/security/limits.conf
user01  soft    nofile  1024
user01  hard    nofile  2048

ulimit -Sn
1024
ulimit -Hn
2048

lendo proc

grep "Max open files" /proc/$$/limits
Max open files            1024                 2048                 files
    
por 24.01.2014 / 11:42