Coloque o ulimit
no script daemontools
, acima do exec. svc
não propaga os rlimits para os scripts que executa:
#!/bin/sh
ulimit -n 102400 #Increase file descriptor limit to 102400
exec setuidgid someuser somecommand
Eu tenho um serviço daemontools cujo /service/myservice/run
contém:
#!/bin/sh
exec setuidgid someuser somecommand
Agora, se eu executar isso como um script diretamente de um shell de root, somecommand
obterá um ulimit correto (ilimitado).
No entanto, quando eu inicio o serviço usando
svc -u /service/myservice
então somecommand
obtém um ulimit efetivamente acima de 11000.
Como posso ter algum comando para obter o ulimit correto mesmo quando iniciado via svc (não de um shell)?
Isso está no lançamento do FreeBSD 9.
Na verdade, é para isso que softlimit é usado.
Você deve tentar:
exec setuidgid someuser softlimit -o 102400 somecommand
Veja: link
Note que -o controla os descritores de arquivos abertos para softlimit, ao contrário de -n para ulimit.