Faça ulimits funcionar com start-stop-daemon

21

Eu tenho um script init.d que inicia um aplicativo usando start-stop-daemon --chuid SOME_SYSTEM_USER . Ou seja, o aplicativo é executado em um usuário diferente, não em root.

O problema é que o aplicativo precisa de configurações de limite especiais (ou seja, ulimit -n 64000 ), que eu defini em limits.conf . Isso funciona muito bem quando eu o executo diretamente do shell: su - SOME_SYSTEM_USER + start app do shell.

Mas quando percorrer o start-stop-daemon --chuid de /etc/init.d , esses limites serão ignorados. Então o aplicativo não funciona, obviamente.

Como faço para forçar o start-stop-daemon a honrar as configurações de ulimit ?

Debian Squeeze, 2.6.32-5-686 # 1 SMP Sáb 5 de maio 01:33:08 UTC 2012 i686 GNU / Linux

    
por user124114 27.07.2012 / 19:27

2 respostas

23

Neste momento, você não pode. limits.conf(5) é a configuração para pam_limits(8) , que é ativada pela pilha PAM de acordo com a configuração em /etc/pam.d . No entanto, start-stop-daemon(8) , conforme iniciado a partir de um script init.d, não passa pela pilha do PAM, portanto, esses tipos de configurações nunca são aplicados.

O bug da Debian # 302079 contém um patch para habilitar os limites de configuração de start-stop-daemon(8) , mas o bug está aberto desde 2005 e o patch ainda não foi mesclado.

Embora não seja ideal, o AFAIK, a maneira recomendada de fazer isso agora, é adicionar uma chamada ulimit em seu script init.d.

    
por 08.08.2012 / 19:45
7

Você também pode usar o comando 'limit' no script upstart.

No arquivo /etc/init/foo.conf, adicione a linha:

limit nofile 64000 64000

O primeiro 64000 é o limite suave e o segundo é o limite rígido.

Você pode encontrar mais informações aqui: link

    
por 12.11.2013 / 18:53

Tags