Haz que ulimits funcione con start-stop-daemon

20

Tengo un init.dscript que inicia una aplicación usando start-stop-daemon --chuid SOME_SYSTEM_USER. Es decir, la aplicación se ejecuta con un usuario diferente, no root.

El problema es que la aplicación necesita una configuración de límite especial (a saber ulimit -n 64000), que configuré limits.conf. Esto funciona bastante bien cuando lo ejecuto directamente desde shell: su - SOME_SYSTEM_USER+ iniciar aplicación desde shell.

Pero cuando se ejecuta start-stop-daemon --chuiddesde /etc/init.d, estos límites se ignoran. Entonces la aplicación no funciona, obviamente.

¿Cómo hago start-stop-daemonpara honrar la ulimitconfiguración?


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

usuario124114
fuente

Respuestas:

23

En este momento, no puedes. limits.conf(5)es la configuración para pam_limits(8), que se activa mediante la pila PAM de acuerdo con la configuración en /etc/pam.d. Sin embargo, start-stop-daemon(8)como se lanzó desde un script init.d no pasa a través de la pila PAM, por lo que ese tipo de configuración nunca se aplica.

El error de Debian # 302079 contiene un parche para permitir establecer límites start-stop-daemon(8), pero el error ha estado abierto desde 2005 y el parche aún no se ha fusionado.

Si bien no es ideal, AFAIK la forma recomendada de lograr esto ahora es agregar una ulimitllamada en su script init.d.

rtandy
fuente
Simplemente agregue la ulimitconfiguración justo antes del start-stop-daemoncomando. (es decir ulimit -n 64000) ... para los ignorantes como yo.
Ryan Schumacher, el
Si, a diferencia del OP, no sabe qué demonio se está bloqueando, obtuve buenos resultados cuando Debian Wheezy reinicia los demonios después de: echo "ulimit -c unlimited" | sudo tee /lib/lsb/init-functions.d/core-limit
Martin Dorey
Puede encontrar más información valiosa aquí: serverfault.com/a/642082/22394
sehe
7

También puede usar el comando 'límite' en el script de inicio.

En el archivo /etc/init/foo.conf, agregue la línea:

limit nofile 64000 64000

El primer 64000 es el límite blando, y el segundo es el límite duro.

Puede encontrar más información aquí: http://upstart.ubuntu.com/cookbook/

dtynan
fuente