daemontools 和 ulimit

daemontools 和 ulimit

我有一个 daemontools 服务,其/service/myservice/run包含:

#!/bin/sh
exec setuidgid someuser somecommand

现在,如果我直接从 root shell 将其作为脚本运行,somecommand将获得正确的 ulimit(无限制)。

但是,当我使用启动服务时

svc -u /service/myservice

然后somecommand得到的 ulimit 实际上略高于 11000。

即使通过 svc 启动(而不是从 shell 启动),我怎样才能让某个命令获得正确的 ulimit?

这是 FreeBSD 9 版本。

答案1

将其ulimit放在脚本中daemontools,在 exec 上方。svc不会将 rlimits 传播到它运行的脚本:

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

答案2

事实上,这就是软限制是为了。

你应该试试:

exec setuidgid someuser softlimit -o 102400 somecommand

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

请注意,-o 控制软限制的打开文件描述符,而 -n 控制 ulimit。

相关内容