O processo de inicialização não respeita a configuração dos limites do arquivo no Ubuntu Linux

1

Eu tenho o limite de arquivos abertos configurado em /etc/security/limits.conf

*         hard    nofile      500000
*         soft    nofile      500000
root      hard    nofile      500000
root      soft    nofile      500000

Quando inicio um processo a partir do shell, funciona bem.

Mas há um processo que começa quando o servidor inicializa.

# update-rc.d myprocess defaults 99

# cat /proc/1435/limits 
Limit                     Soft Limit           Hard Limit           Units     
....
Max open files            4096                 4096                 files     
....

Por que isso está acontecendo?

    
por Daniel Cukier 26.09.2014 / 00:06

1 resposta

1

resposta: tente "man limits.conf" Faz parte do PAM: módulos de autenticação plugáveis

Estes limites são aplicáveis apenas quando se usa um programa que foi construído para usar o PAM, geralmente fazendo uma autenticação (por exemplo: login, su, sudo, ssh, ...). Quando você loga como root (via login, su, sudo, ...), você está autenticando, então seu sistema está usando as várias configurações do PAM, incluindo o limits.conf.

Quando o sistema inicializa, não há autenticação, portanto, nenhuma configuração do PAM é lida. Seu daemon usará as configurações padrão. Se mais tarde você (re) iniciar a partir do root (por exemplo usando o sudo su - no Ubuntu), então o seu shell atual obtém as configurações de limits.conf e o que for executado por ele também irá herdá-las.

possíveis soluções: Como o root pode sobrescrever os limites de qualquer forma, você deve alterar as configurações no script de inicialização do (s) daemon (s). Por exemplo, com ulimit (pesquisa dentro de "man bash")

Você também pode tentar usar uma construção como: su - -c 'daemon ... = myprocess' em seu script de inicialização. Talvez esse su adicional use o PAM e mude os limites. Eu não sei. Diga-nos!

    
por 01.10.2014 / 20:46