daemontools et ulimit

4

J'ai un service daemontools qui /service/myservice/runcontient:

#!/bin/sh
exec setuidgid someuser somecommand

Maintenant, si somecommandj’exécute ceci en tant que script directement à partir d’un shell root, j’obtiendrai un ulimit correct (illimité).

Cependant, quand je lance le service en utilisant

svc -u /service/myservice

puis somecommandobtient effectivement un ulimit légèrement supérieur à 11000.

Comment puis-je avoir une certaine commande pour obtenir le bon ulimit même après un démarrage via svc (pas à partir d'un shell)?

Ceci est sur la version 9 de FreeBSD.

oberstet
la source

Réponses:

1

Mettez le ulimitdans le daemontoolsscript, au-dessus de l'exec. svcne propage pas les rlimits aux scripts qu'il exécute:

#!/bin/sh
ulimit -n 102400 #Increase file descriptor limit to 102400
exec setuidgid someuser somecommand
utilisateur49740
la source
4

En fait, c’est à cela que s'adresse softlimit .

Tu devrais essayer:

exec setuidgid someuser softlimit -o 102400 somecommand

Voir: http://cr.yp.to/daemontools/softlimit.html

Notez que -o contrôle les descripteurs de fichiers ouverts pour softlimit, contrairement à -n pour ulimit.

oo.
la source