daemontools e ulimit

3

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.

    
por oberstet 07.06.2012 / 18:30

2 respostas

2

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
    
por 07.06.2012 / 18:34
3

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.

    
por 22.03.2013 / 19:25