Заставьте ulimits работать с start-stop-daemon

У меня есть init.d скрипт, который запускает приложение, используя start-stop-daemon --chuid SOME_SYSTEM_USER, То есть приложение работает под другим пользователем, а не под пользователем root.

Проблема в том, что приложение нуждается в специальных настройках лимита (а именно ulimit -n 64000), который я установил в limits.conf, Это работает очень хорошо, когда я запускаю его прямо из оболочки: su - SOME_SYSTEM_USER + запустить приложение из оболочки.

Но когда пробег через start-stop-daemon --chuid от /etc/init.dэти ограничения игнорируются. Тогда приложение не работает, очевидно.

Как я заставляю start-stop-daemon в честь ulimit настройки?


Debian Squeeze, 2.6.32-5-686 # 1 SMP Sat 5 мая 01:33:08 UTC 2012 i686 GNU/Linux

2 ответа

Решение

В это время ты не можешь. limits.conf(5) это конфигурация для pam_limits(8), который активируется стеком PAM в соответствии с конфигурацией в /etc/pam.d, Тем не мение, start-stop-daemon(8) поскольку запущенный из сценария init.d не проходит через стек PAM, такие настройки никогда не применяются.

Ошибка #302079 в Debian содержит патч для включения ограничений start-stop-daemon(8), но ошибка была открыта с 2005 года, и патч еще не был объединен.

Хотя это и не идеально, AFAIK рекомендуемый способ сделать это прямо сейчас, это добавить ulimit вызовите ваш скрипт init.d.

Вы также можете использовать команду limit в сценарии upstart.

В файле /etc/init/foo.conf добавьте строку:

limit nofile 64000 64000

Первый 64000 - это мягкий предел, а второй - жесткий предел.

Вы можете найти больше информации здесь: http://upstart.ubuntu.com/cookbook/

Другие вопросы по тегам