daemontools 및 ulimit 서비스를 가지고있다. /service/myservice/run 다음을 포함합니다 : #!/bin/sh exec

나는 daemontools 서비스를 가지고있다. /service/myservice/run 다음을 포함합니다 :

#!/bin/sh
exec setuidgid someuser somecommand

이제 루트 셸에서 스크립트로 직접 실행하면, somecommand 정확한 ulimit (무제한)을 얻을 것입니다.

그러나 서비스를 시작할 때

svc -u /service/myservice

그때 somecommand 11000을 약간 상회하는 ulimit를 효과적으로 얻습니다.

svc (셸이 아닌)를 통해 시작된 경우에도 올바른 ulimit을 얻으려면 어떻게해야합니까?

이것은 FreeBSD 9 릴리스에 있습니다.



답변

넣어 ulimit ~ 안에 daemontools 스크립트, exec 위. svc rlimits가 실행되는 스크립트에 전파되지 않습니다.

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


답변

실제로, 이것은 무엇입니까? 소프트 리밋 에 대한 것입니다.

시도해야합니다 :

exec setuidgid someuser softlimit -o 102400 somecommand

만나다: http://cr.yp.to/daemontools/softlimit.html

-o는 ulimit의 -n과는 달리 softlimit에 대한 파일 설명자를 엽니 다.


답변