Заставьте 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/