3

У меня есть служба daemontools, чья /service/myservice/run содержит:

#!/bin/sh
exec setuidgid someuser somecommand

Теперь, если я запускаю это как скрипт непосредственно из корневой оболочки, somecommand получит правильный ulimit (неограниченный).

Тем не менее, когда я запускаю службу с помощью

svc -u /service/myservice

тогда somecommand действительно получает ulimit чуть выше 11000.

Как я могу получить некоторую команду для получения правильного ulimit даже при запуске через svc (не из оболочки)?

Это на выпуске FreeBSD 9.

2 ответа2

3

На самом деле, это то, для чего softlimit .

Тебе стоит попробовать:

exec setuidgid someuser softlimit -o 102400 somecommand

Смотрите: http://cr.yp.to/daemontools/softlimit.html

Обратите внимание, что -o управляет дескрипторами открытых файлов для softlimit, в отличие от -n для ulimit.

2

Поместите ulimit в скрипт daemontools над exec. svc не передает rlimits в сценарии, которые он выполняет:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .